Explorar o código

add v1 support post request at the raw-data

Dotos %!s(int64=8) %!d(string=hai) anos
pai
achega
3d9f990d26
Modificáronse 11 ficheiros con 155 adicións e 168 borrados
  1. 10 21
      app.js
  2. 11 11
      bin/www
  3. 46 51
      package.json
  4. 10 10
      routes/ip.js
  5. 13 13
      routes/joke.js
  6. 10 10
      routes/mobile.js
  7. 2 2
      routes/netease.js
  8. 1 1
      routes/test.js
  9. 17 17
      routes/v1.js
  10. 11 12
      routes/weather.js
  11. 24 20
      routes/welcome.js

+ 10 - 21
app.js

@@ -6,7 +6,6 @@ var logger = require('morgan');
 var cookieParser = require('cookie-parser');
 var bodyParser = require('body-parser');
 var helmet = require('helmet');
-//var sass = require('node-sass-middleware');
 //Welcome Page
 var welcome = require('./routes/welcome');
 //日志输出
@@ -34,6 +33,7 @@ var app = express();
 //     appKey: process.env.LEANCLOUD_APP_KEY,
 //     masterKey: process.env.LEANCLOUD_APP_MASTER_KEY
 // });
+
 // app.use(AV.express());
 app.set('views', path.join(__dirname, 'views'));
 // view engine setup
@@ -41,39 +41,27 @@ app.set('view engine', 'pug');
 app.enable('trust proxy');
 // uncomment after placing your favicon in /public
 //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
-app.use(logger('dev'));
+app.use(logger('combined', {
+    skip: function(req, res) { return res.statusCode < 400 }
+}));
+//app.use(bodyParser.raw({ type: '*/*' }));
 app.use(bodyParser.json());
 app.use(bodyParser.urlencoded({ extended: false }));
 app.use(cookieParser());
 app.use(helmet());
-//配置 sass
-// app.use(sass({
-//     src: __dirname + '/static/sass',
-//     dest: __dirname + '/static/css',
-//     indentedSyntax: true,
-//     sourceMap: true
-// }));
 //静态文件访问路径
 app.use('/static/', express.static(path.join(__dirname, 'static')));
 var i = 0;
-var prevTime = +new Date();
 //每隔3分钟自动请求一次
 var t = setInterval(function() {
-    var nowTime = +new Date();
-    if (nowTime - prevTime < 3 * 60 * 1000) {
-        //
-    } else {
-        request.get('https://bird.ioliu.cn/joke?_detect=' + i++).end(function(err, response) {
-            prevTime = +new Date();
-        });
-    }
+    request.get('https://bird.ioliu.cn/joke?_detect=' + i++).end(function(err, response) {
+        prevTime = +new Date();
+    });
 }, 3 * 60 * 1000);
-
 /***
  * 全局过滤:统计和日志
  */
 app.use(function(req, res, next) {
-
     res.header("Access-Control-Allow-Origin", "*");
     res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept,Access-Control-Allow-Origin");
     res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
@@ -88,7 +76,8 @@ app.use(function(req, res, next) {
         Referer: ref,
         //Protocol: protocol, 
         OriginalUrl: originalUrl,
-        Time: new Date().toLocaleString()
+        Time: new Date().toLocaleString(),
+        params: JSON.stringify(req.body || req.query)
     };
     /**
      * 不记录日志和统计的请求:

+ 11 - 11
bin/www

@@ -5,11 +5,11 @@
  */
 process.env.TZ = 'Asia/Shanghai';
 
-let app = require('../app');
-let debug = require('debug')('API:server');
-let http = require('http');
-const cluster = require('cluster');
-const cpus = require('os').cpus().length;
+var app = require('../app');
+var debug = require('debug')('API:server');
+var http = require('http');
+var cluster = require('cluster');
+var cpus = require('os').cpus().length;
 
 if (cluster.isMaster) {
     console.log('[master] ' + "start master...");
@@ -30,14 +30,14 @@ if (cluster.isMaster) {
      * Get port from environment and store in Express.
      */
 
-    let port = normalizePort(process.env.PORT || '3000');
+    var port = normalizePort(process.env.PORT || '3000');
     app.set('port', port);
 
     /**
      * Create HTTP server.
      */
 
-    let server = http.createServer(app);
+    var server = http.createServer(app);
 
     /**
      * Listen on provided port, on all network interfaces.
@@ -52,7 +52,7 @@ if (cluster.isMaster) {
      */
 
     function normalizePort(val) {
-        let port = parseInt(val, 10);
+        var port = parseInt(val, 10);
 
         if (isNaN(port)) {
             // named pipe
@@ -76,7 +76,7 @@ if (cluster.isMaster) {
             throw error;
         }
 
-        let bind = typeof port === 'string' ?
+        var bind = typeof port === 'string' ?
             'Pipe ' + port :
             'Port ' + port;
 
@@ -100,8 +100,8 @@ if (cluster.isMaster) {
      */
 
     function onListening() {
-        let addr = server.address();
-        let bind = typeof addr === 'string' ?
+        var addr = server.address();
+        var bind = typeof addr === 'string' ?
             'pipe ' + addr :
             'port ' + addr.port;
         debug('Listening on ' + bind);

+ 46 - 51
package.json

@@ -1,52 +1,47 @@
-{
-    "name": "JsonBird",
-    "version": "1.4.0",
-    "description": "A Remote Json Agent Service",
-    "author": {
-        "name": "xCss",
-        "mail": "yy.liu@foxmail.com"
-    },
-    "license": "MIT",
-    "private": true,
-    "scripts": {
-        "start": "node ./bin/www"
-    },
-    "repository": {
-        "type": "git",
-        "url": "git+https://github.com/xCss/JsonBird.git"
-    },
-    "keywords": [
-        "JsonBird",
-        "JsonProxy"
-    ],
-    "bugs": {
-        "url": "https://github.com/xCss/JsonBird/issues"
-    },
-    "readme": "./readme.md",
-    "homepage": "https://github.com/xCss/JsonBird#readme",
-    "dependencies": {
-        "bcryptjs": "^2.3.0",
-        "body-parser": "~1.15.1",
-        "cluster": "^0.7.7",
-        "cookie-parser": "~1.4.3",
-        "debug": "~2.2.0",
-        "express": "~4.13.4",
-        "express-generator": "^4.13.4",
-        "helmet": "^2.3.0",
-        "leanengine": "^1.2.2",
-        "moment": "^2.15.0",
-        "moment-timezone": "^0.5.5",
-        "morgan": "~1.7.0",
-        "mysql": "^2.11.1",
-        "node-sass": "^3.10.0",
-        "node-sass-middleware": "^0.9.8",
-        "os": "^0.1.1",
-        "pug": "^2.0.0-beta6",
-        "querystring": "^0.2.0",
-        "serve-favicon": "~2.3.0",
-        "superagent": "^2.3.0"
-    },
-    "engines": {
-        "node": "6.x"
-    }
+{
+    "name": "JsonBird",
+    "version": "1.4.0",
+    "description": "A Remote Json Agent Service",
+    "author": {
+        "name": "xCss",
+        "mail": "yy.liu@foxmail.com"
+    },
+    "license": "MIT",
+    "private": true,
+    "scripts": {
+        "start": "node ./bin/www"
+    },
+    "repository": {
+        "type": "git",
+        "url": "git+https://github.com/xCss/JsonBird.git"
+    },
+    "keywords": [
+        "JsonBird",
+        "JsonProxy"
+    ],
+    "bugs": {
+        "url": "https://github.com/xCss/JsonBird/issues"
+    },
+    "readme": "./readme.md",
+    "homepage": "https://github.com/xCss/JsonBird#readme",
+    "dependencies": {
+        "bcryptjs": "^2.3.0",
+        "body-parser": "~1.15.1",
+        "cluster": "^0.7.7",
+        "cookie-parser": "~1.4.3",
+        "debug": "~2.2.0",
+        "express": "~4.13.4",
+        "express-generator": "^4.13.4",
+        "helmet": "^2.3.0",
+        "leanengine": "^1.2.2",
+        "morgan": "~1.7.0",
+        "mysql": "^2.11.1",
+        "os": "^0.1.1",
+        "pug": "^2.0.0-beta6",
+        "serve-favicon": "~2.3.0",
+        "superagent": "^2.3.0"
+    },
+    "engines": {
+        "node": "6.x"
+    }
 }

+ 10 - 10
routes/ip.js

@@ -1,7 +1,7 @@
-let express = require('express');
-let request = require('superagent');
-let router = express.Router();
-const base = 'http://apis.juhe.cn/ip/ip2addr?key=28c0a6a5eb9cca3f38bc5877a83c9868';
+var express = require('express');
+var request = require('superagent');
+var router = express.Router();
+var base = 'http://apis.juhe.cn/ip/ip2addr?key=28c0a6a5eb9cca3f38bc5877a83c9868';
 router.get('/*', function(req, res, next) {
     ip2address(req, res, next);
 });
@@ -12,11 +12,11 @@ router.post('/*', function(req, res, next) {
  * 获取IP地址所对应的地区
  */
 function ip2address(req, res, next) {
-    let ip = req.query.ip || req.body.ip || req.headers['x-real-ip'] || req.ip.replace(/\:\:1/, '127.0.0.1');
-    let callback = req.query.callback || req.body.callback;
-    let type = req.query.type || req.body.type;
-    let url = base + '&ip=' + ip + '&dtype=' + type;
-    let output = {
+    var ip = req.query.ip || req.body.ip || req.headers['x-real-ip'] || req.ip.replace(/\:\:1/, '127.0.0.1');
+    var callback = req.query.callback || req.body.callback;
+    var type = req.query.type || req.body.type;
+    var url = base + '&ip=' + ip + '&dtype=' + type;
+    var output = {
         data: {},
         status: {
             code: 200,
@@ -24,7 +24,7 @@ function ip2address(req, res, next) {
         }
     };
     request.get(url).end(function(err, response) {
-        let body = response.body || response.text;
+        var body = response.text || response.body || {};
         if (type !== 'xml') {
             if (typeof body === 'string') {
                 try {

+ 13 - 13
routes/joke.js

@@ -1,7 +1,7 @@
-let express = require('express');
-let request = require('superagent');
-let router = express.Router();
-const key = '64a40e3c55e88cc8cd66a78d030bddce';
+var express = require('express');
+var request = require('superagent');
+var router = express.Router();
+var key = '64a40e3c55e88cc8cd66a78d030bddce';
 /**
  * Get 请求
  */
@@ -32,13 +32,13 @@ router.post('/rand', function(req, res, next) {
  * 统一的请求
  */
 function getJOKE(req, res, next, op) {
-    let page = req.query.page || req.body.page || 1;
-    let pagesize = req.query.pagesize || req.body.pagesize || 1;
-    let sort = req.query.sort || req.body.sort;
-    let time = req.query.time || req.body.time;
-    let type = req.query.type || req.body.type || 'pic';
-    let callback = req.query.callback || req.body.callback;
-    let url = '';
+    var page = req.query.page || req.body.page || 1;
+    var pagesize = req.query.pagesize || req.body.pagesize || 1;
+    var sort = req.query.sort || req.body.sort;
+    var time = req.query.time || req.body.time;
+    var type = req.query.type || req.body.type || 'pic';
+    var callback = req.query.callback || req.body.callback;
+    var url = '';
     if (!!op && op === 'rand') {
         if (type !== 'pic') {
             type = null;
@@ -60,7 +60,7 @@ function getJOKE(req, res, next, op) {
             url = url.replace(/text/, 'list');
         }
     }
-    let output = {
+    var output = {
         data: {},
         status: {
             code: 200,
@@ -68,7 +68,7 @@ function getJOKE(req, res, next, op) {
         }
     };
     request.get(url).end(function(err, response) {
-        let body = response.text || response.body;
+        var body = response.text || response.body || {};
         if (typeof body === 'string') {
             try {
                 body = JSON.parse(body);

+ 10 - 10
routes/mobile.js

@@ -1,7 +1,7 @@
-let express = require('express');
-let request = require('superagent');
-let router = express.Router();
-const base = 'http://apis.juhe.cn/mobile/get?key=9f719ab7014f2cbdc7b394edf70d0f76';
+var express = require('express');
+var request = require('superagent');
+var router = express.Router();
+var base = 'http://apis.juhe.cn/mobile/get?key=9f719ab7014f2cbdc7b394edf70d0f76';
 router.get('/', function(req, res, next) {
     getMobile(req, res, next);
 });
@@ -10,11 +10,11 @@ router.post('/', function(req, res, next) {
 });
 
 function getMobile(req, res, next) {
-    let type = req.query.type || req.body.type;
-    let phone = req.query.phone || req.body.phone;
-    let callback = req.query.callback || req.body.callback;
-    let url = base + '&phone=' + phone + '&dtype=' + type;
-    let output = {
+    var type = req.query.type || req.body.type;
+    var phone = req.query.phone || req.body.phone;
+    var callback = req.query.callback || req.body.callback;
+    var url = base + '&phone=' + phone + '&dtype=' + type;
+    var output = {
         data: {},
         status: {
             code: 200,
@@ -22,7 +22,7 @@ function getMobile(req, res, next) {
         }
     };
     request.get(url).end(function(err, response) {
-        let body = response.text || response.body;
+        var body = response.text || response.body || {};
         if (type !== 'xml') {
             if (typeof body === 'string') {
                 try {

+ 2 - 2
routes/netease.js

@@ -30,12 +30,12 @@ router.get('/', function(req, res, next) {
 });
 
 function netease_http(url, next, callback) {
-    let headers = {
+    var headers = {
         Cookie: 'appver=1.5.0.75771;',
         referer: 'http://music.163.com'
     }
     request.get(url).set(headers).end(function(err, res) {
-        let body = res.text || res.body;
+        var body = res.text || res.body || {};
         if (typeof body === 'string') {
             try {
                 body = JSON.parse(body);

+ 1 - 1
routes/test.js

@@ -10,7 +10,7 @@ router.get('/', function(req, res, next) {
     };
 
     request.post('https://bird.ioliu.cn/joke/').send(mydata).end(function(err, resp) {
-        let body = resp.text || resp.body;
+        var body = resp.text || resp.body || {};
         res.send(body);
     });
 });

+ 17 - 17
routes/v1.js

@@ -3,22 +3,22 @@ var request = require('superagent');
 var router = express.Router();
 
 router.get('/*', function(req, res, next) {
-    getJSON(req, res, next, 'get');
+    getJSON(req, res, next);
 });
 
 router.post('/*', function(req, res, next) {
-    getJSON(req, res, next, 'post');
+    getJSON(req, res, next);
 });
 
-function getJSON(req, res, next, method) {
-    let ip = req.ip.replace(/\:\:ffff\:/, '').replace(/\:\:1/, '127.0.0.1');
-    let host = req.hostname;
-    let protocol = req.protocol;
-    let originalUrl = req.originalUrl;
-    let url = req.query.url || req.body.url;
-    let callback = req.query.callback || req.body.callback;
-    let params = req.body;
-    let output = {
+function getJSON(req, res, next) {
+    var ip = req.ip.replace(/\:\:ffff\:/, '').replace(/\:\:1/, '127.0.0.1');
+    var host = req.hostname;
+    var protocol = req.protocol;
+    var originalUrl = req.originalUrl;
+    var url = req.query.url || req.body.url;
+    var callback = req.query.callback || req.body.callback;
+    var params = req.body;
+    var output = {
         data: {
             IP: ip,
             Info: 'Please Set URL Like This: ' + protocol + '://' + host + '/v1/?url=http[s]://YourWantProxyUrl.Com'
@@ -28,9 +28,9 @@ function getJSON(req, res, next, method) {
             massage: ''
         }
     };
-    method = method.toUpperCase();
+    method = req.method.toUpperCase();
     if (url) {
-        let _temp = {};
+        var _temp = {};
         switch (method) {
             case 'GET':
                 // get request
@@ -39,7 +39,7 @@ function getJSON(req, res, next, method) {
                 }
 
                 if (params) {
-                    for (let i in params) {
+                    for (var i in params) {
                         _temp[i] = encodeURI(params[i]);
                     }
                 }
@@ -50,7 +50,7 @@ function getJSON(req, res, next, method) {
                     .get(url)
                     .query(_temp)
                     .end(function(err, response) {
-                        let body = response.body || response.text;
+                        var body = response.text || response.body || {};
                         if (typeof body === 'string') {
                             try {
                                 body = JSON.parse(body);
@@ -81,7 +81,7 @@ function getJSON(req, res, next, method) {
             default:
                 // post request
                 if (params) {
-                    for (let i in params) {
+                    for (var i in params) {
                         _temp[i] = params[i];
                     }
                 }
@@ -90,7 +90,7 @@ function getJSON(req, res, next, method) {
                     .type('form')
                     .send(_temp)
                     .end(function(err, response) {
-                        let body = response.body || response.text;
+                        var body = response.text || response.body || {};
                         if (typeof body === 'string') {
                             try {
                                 body = JSON.parse(body);

+ 11 - 12
routes/weather.js

@@ -1,8 +1,7 @@
-let express = require('express');
-let request = require('superagent');
-let qs = require('querystring');
-let router = express.Router();
-const base = 'http://op.juhe.cn/onebox/weather/query?key=e0540a109f5a73e9df2981cdeb9d106f';
+var express = require('express');
+var request = require('superagent');
+var router = express.Router();
+var base = 'http://op.juhe.cn/onebox/weather/query?key=e0540a109f5a73e9df2981cdeb9d106f';
 router.get('/*', function(req, res, next) {
     getMobile(req, res, next);
 });
@@ -11,12 +10,12 @@ router.post('/*', function(req, res, next) {
 });
 
 function getMobile(req, res, next) {
-    let city = req.query.city || req.body.city;
-    city = !!city ? qs.escape(city) : '';
-    let type = (req.query.type || req.body.type) === 'xml' ? 'xml' : '';
-    let callback = req.query.callback || req.body.callback;
-    let url = base + '&cityname=' + city + '&dtype=' + type;
-    let output = {
+    var city = req.query.city || req.body.city;
+    city = !!city ? encodeURIComponent(city) : '';
+    var type = (req.query.type || req.body.type) === 'xml' ? 'xml' : '';
+    var callback = req.query.callback || req.body.callback;
+    var url = base + '&cityname=' + city + '&dtype=' + type;
+    var output = {
         data: {},
         status: {
             code: 200,
@@ -24,7 +23,7 @@ function getMobile(req, res, next) {
         }
     };
     request.get(url).end(function(err, response) {
-        let body = response.body || response.text;
+        var body = response.text || response.body || {};
         if (type !== 'xml') {
             if (typeof body === 'string') {
                 try {

+ 24 - 20
routes/welcome.js

@@ -1,14 +1,14 @@
-let express = require('express');
-let request = require('superagent');
-let config = require('../configs/config').site;
-let router = express.Router();
+var express = require('express');
+var request = require('superagent');
+var config = require('../configs/config').site;
+var router = express.Router();
 
 /* GET home page. */
 router.get('/', function(req, res, next) {
-    //let ip = req.ip;
-    let ip = req.headers['x-real-ip'];
+    //var ip = req.ip;
+    var ip = req.headers['x-real-ip'];
     ip2addr(ip, function(data) {
-        let params = {
+        var params = {
             head: config.title,
             title: 'Welcome | ' + config.title + ' - ' + config.description,
             description: config.description
@@ -22,20 +22,24 @@ router.get('/', function(req, res, next) {
 });
 
 function ip2addr(ip, callback) {
-    request.get('http://apis.juhe.cn/ip/ip2addr?ip=' + ip + '&key=28c0a6a5eb9cca3f38bc5877a83c9868').end(function(err, res) {
-        let body = res.body || res.text;
-        if (!err && res.statusCode == 200) {
-            if (typeof body === 'string') {
-                try {
-                    body = JSON.parse(body);
-                } catch (e) {}
+    request
+        .get('http://apis.juhe.cn/ip/ip2addr')
+        .query({ ip: ip, key: '28c0a6a5eb9cca3f38bc5877a83c9868' })
+        .end(function(err, res) {
+            console.log(res)
+            var body = res.text || res.body || {};
+            if (!err && res.statusCode == 200) {
+                if (typeof body === 'string') {
+                    try {
+                        body = JSON.parse(body);
+                    } catch (e) {}
+                }
+                callback && callback(body.result);
+            } else {
+                console.log(' / request info:' + err);
+                callback && callback();
             }
-            callback && callback(body.result);
-        } else {
-            console.log(' / request info:' + err);
-            callback && callback();
-        }
-    });
+        });
 }