-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathproxy.js
80 lines (68 loc) · 1.95 KB
/
proxy.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
var _ = require('lodash');
var URL = require('url');
var parseBody = require('co-body');
var parseUpload = require('co-busboy');
var path = require('path');
var mapJson = require('./map.json');
var errors = require('./errors/index.js');
function proxy(dir){
function eleNum(obj){
var count = 0;
for(var i in obj){
count++;
}
return count;
}
return function *deal(next){
if(this.params.page && 1 <= eleNum(this.params) <= 2){
if(this.params.page == 'mobile' && eleNum(this.params) == 2) {
this.params.page = 'm' + this.params.m;
}
var dFun = '';
var mapFile = this.params.page;
var filePath = mapJson[mapFile] ? path.join(dir, mapJson[mapFile]) : '';
if(this.method == 'GET'){
try {
dFun = yield function *(){ return require('./' + filePath + '.js')[mapFile]; };
} catch(err) {
dFun = yield function *(){
return require('./' + path.join(dir, mapJson['notFound']) + '.js')['notFound'];
}
}
yield dFun;
}
if(this.method == 'POST'){
try {
dFun = yield function *(){ return require('./' + filePath + '.js')[mapFile + 'Post']; };
} catch(err) {
errors.console(err);
dFun = yield function *(){
return { state: 0, message: '服务器错误' };
}
}
yield dFun;
}
}
}
}
function listen(app, port){
var opts = process.argv;
var isListener = 0;
if(!app && !port){
errors.throwError('app or port is not found!');
}
for (var i = 0; i < opts.length; i++){
if(opts[i].indexOf('-ci') == 0) {
isListener = 1;
}
}
if(isListener === 0) {
console.log('Welcome use Gentle3D !');
console.log('App is listening port ' + port + ' ......');
return app.listen(port);
} else {
process.exit(0);
}
}
module.exports.proxy = proxy;
module.exports.listen = listen;