Commit f03d0d7a authored by 神楽坂玲奈's avatar 神楽坂玲奈

Merge branch 'master' of github.com:mycard/mycard-console

parents ee1e94db 832fabbc
......@@ -12,3 +12,4 @@ node-debug.log
/mongodb_config.json
.DS_Store
/npm-debug.log
import {Injectable} from '@angular/core';
import App from '../models/browserapp';
import {Http} from '@angular/http';
import {Http, RequestOptions, Headers} from '@angular/http';
import 'rxjs/add/operator/toPromise';
/**
* Created by weijian on 2016/12/30.
......@@ -18,4 +18,15 @@ export class AppService {
getApp(id: string): Promise<App> {
return this.http.get(`http://localhost:8000/apps/${id}`).map((response) => new App(response.json())).toPromise();
}
save(app: App): Promise<any> {
let headers = new Headers({'Content-Type': 'application/json'});
let options = new RequestOptions({headers: headers});
return this.http.post(`http://localhost:8000/apps/${app.id}`, app, options).map((response) => response.json()).toPromise();
}
update(app: App) {
}
}
......@@ -5,6 +5,7 @@
"scripts": {
"prestart": "tsc",
"start": "concurrently \"node server.js\" \"lite-server\"",
"server": "node server.js",
"tsc": "tsc",
"lint": "tslint -e ./node_modules/** ./**/*.ts -t verbose",
"migrate": "tsc && mongo-migrate --runMongoMigrate --config mongodb_config.json --dbPropName dbSettings"
......@@ -26,8 +27,6 @@
"koa": "^2.0.0",
"koa-bodyparser": "^3.2.0",
"koa-log4": "^2.1.0",
"koa-logger": "^2.0.0",
"koa-morgan": "^1.0.1",
"koa-router": "^7.0.1",
"material-design-icons": "^3.0.1",
"mongodb": "^2.2.16",
......@@ -43,8 +42,8 @@
"@types/hammerjs": "^2.0.34",
"@types/koa": "^2.0.37",
"@types/koa-bodyparser": "^3.0.22",
"@types/koa-logger": "^2.0.2",
"@types/koa-router": "^7.0.21",
"@types/log4js": "0.0.32",
"@types/mongodb": "^2.1.36",
"@types/node": "^6.0.55",
"@types/pluralize": "0.0.27",
......
......@@ -27,7 +27,7 @@ router.post('/apps/:id', async(ctx, next) => {
ctx.body = await app.save();
} catch (e) {
if (e instanceof ModelExistsError) {
throw new BadRequest();
throw new BadRequest(`App ${ctx.params.id} already exists`);
} else {
throw InternalError;
}
......
import Koa = require('koa');
import logger = require('koa-logger');
import index from './routes/index';
import users from './routes/users';
import apps from './routes/apps';
import packages from './routes/packages';
import bodyParser = require('koa-bodyparser');
import Mongorito = require('mongorito');
import log4js = require('log4js');
const logger = log4js.getLogger();
const url = require('./mongodb_config.json').dbSettings.connectionString;
const app = new Koa();
app.use(async(ctx, next) => {
const start = new Date();
await next();
const ms = Date.now() - start.getTime();
ctx.set('X-Response-Time', `${ms}ms`);
});
// 错误处理
app.use(async(ctx, next) => {
try {
await next();
......@@ -20,12 +30,18 @@ app.use(async(ctx, next) => {
ctx.body = {
message: err.message
};
if (ctx.response.status >= 400) {
logger.warn(err);
} else if (ctx.response.status >= 500) {
logger.error(err);
}
}
});
// 跨域
app.use(async(ctx, next) => {
ctx.set('Access-Control-Allow-Origin', '*');
ctx.set('Access-Control-Allow-Headers', 'Content-Type');
if (ctx.method === 'OPTIONS') {
ctx.status = 204;
} else {
......@@ -33,13 +49,6 @@ app.use(async(ctx, next) => {
}
});
app.use(logger());
app.use(async(ctx, next) => {
const start = new Date();
await next();
const ms = Date.now() - start.getTime();
ctx.set('X-Response-Time', `${ms}ms`);
});
app.use(bodyParser());
app.use(index.routes());
......@@ -49,3 +58,74 @@ app.use(packages.routes());
Mongorito.connect(url).then(() => {
app.listen(8000);
});
// function getKoaLogger (logger4js, options) {
// if (typeof options === 'object') {
// options = options || {}
// } else if (options) {
// options = { format: options }
// } else {
// options = {}
// }
//
// var thislogger = logger4js
// var level = levels.toLevel(options.level, levels.INFO)
// var fmt = options.format || DEFAULT_FORMAT
// var nolog = options.nolog ? createNoLogCondition(options.nolog) : null
//
// return co.wrap(function *(ctx, next) {
// // mount safety
// if (ctx.request._logging) return yield next()
//
// // nologs
// if (nolog && nolog.test(ctx.originalUrl)) return yield next()
// if (thislogger.isLevelEnabled(level) || options.level === 'auto') {
// var start = new Date()
// var writeHead = ctx.response.writeHead
//
// // flag as logging
// ctx.request._logging = true
//
// // proxy for statusCode.
// ctx.response.writeHead = function (code, headers) {
// ctx.response.writeHead = writeHead
// ctx.response.writeHead(code, headers)
// ctx.response.__statusCode = code
// ctx.response.__headers = headers || {}
//
// // status code response level handling
// if (options.level === 'auto') {
// level = levels.INFO
// if (code >= 300) level = levels.WARN
// if (code >= 400) level = levels.ERROR
// } else {
// level = levels.toLevel(options.level, levels.INFO)
// }
// }
//
// yield next()
// // hook on end request to emit the log entry of the HTTP request.
// ctx.response.responseTime = new Date() - start
// // status code response level handling
// if (ctx.res.statusCode && options.level === 'auto') {
// level = levels.INFO
// if (ctx.res.statusCode >= 300) level = levels.WARN
// if (ctx.res.statusCode >= 400) level = levels.ERROR
// }
// if (thislogger.isLevelEnabled(level)) {
// var combinedTokens = assembleTokens(ctx, options.tokens || [])
// if (typeof fmt === 'function') {
// var line = fmt(ctx, function (str) {
// return format(str, combinedTokens)
// })
// if (line) thislogger.log(level, line)
// } else {
// thislogger.log(level, format(fmt, combinedTokens))
// }
// }
// } else {
// // ensure next gets always called
// yield next()
// }
// })
// }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment