Dotos 8 năm trước cách đây
mục cha
commit
3280b4a19d
4 tập tin đã thay đổi với 151 bổ sung196 xóa
  1. 33 59
      routes/mobile.js
  2. 16 87
      routes/v2.js
  3. 35 50
      routes/weather.js
  4. 67 0
      utils/utils.js

+ 33 - 59
routes/mobile.js

@@ -1,8 +1,9 @@
-var express = require('express');
-var request = require('superagent');
-var router = express.Router();
-var base = 'http://apis.juhe.cn/mobile/get?key=9f719ab7014f2cbdc7b394edf70d0f76';
-var cookie = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36' };
+const express = require('express');
+const request = require('superagent');
+const utils = require('../utils/utils');
+const router = express.Router();
+const base = 'http://jshmgsdmfb.market.alicloudapi.com/shouji/query';
+const APPCODE = 'c8c963a57cd7452a962e53653f03d2f6';
 router.get('/', function(req, res, next) {
     getMobile(req, res, next);
 });
@@ -10,66 +11,39 @@ router.post('/', function(req, res, next) {
     getMobile(req, res, next);
 });
 
-function getMobile(req, res, next) {
-    var type = req.query.type || req.body.type || 'json';
-    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 = {
+let getMobile = (req, res, next) => {
+    let params = utils.convert(req,res,next,base);
+    let config = params[0];
+    let protocol = params[1];
+    let host = params[2];
+    let cb = params[3];
+    let _params = params[4];
+    let output = {
         data: {},
         status: {
-            code: 200,
-            message: ''
+            code: -1,
+            message: 'phone number is empty.'
         }
     };
-    if(!phone){
-        output['status']={
-            code:-1,
-            message:'phone number is empty.'
-        };
-        if (callback) {
-            res.jsonp(output);
-        } else {
-            res.json(output);
-        }
-        return;
-    }
-    request.get(url).set(cookie).end(function(err, response) {
-        var body = {};
-        if (response && response.text) {
-            body = response.text;
-        } else if (response && response.body) {
-            body = response.body;
-        }
-        if (type !== 'xml') {
-            if (typeof body === 'string') {
-                try {
-                    body = JSON.parse(body);
-                } catch (e) {
-                    output.status = {
-                        code: -1
-                    };
+    if(_params['shouji']){
+        config['headers']['Authorization'] = `APPCODE ${APPCODE}`;
+        res.send(config)
+        utils.createServer(config).then(ret => {
+            console.log(1)
+            cb && res.jsonp(ret) || res.send(ret);
+        }).catch(ex => {
+            console.log(ex)
+            output = {
+                status: {
+                    code: -2,
+                    message: Object.keys(ex).length>0 ? ex : 'unknow error, please checked your phone number' 
                 }
             }
-            output.data = (body.result && body.result.data ? body.result.data : body.result) || {};
-            if (!err && response.statusCode === 200 && body.error_code === 0) {
-                //
-            } else {
-                output.status = {
-                    code: -1,
-                    message: err || body.reason || 'Something bad happend.'
-                };
-            }
-            if (callback) {
-                res.jsonp(output);
-            } else {
-                res.json(output);
-            }
-        } else {
-            res.header('content-type', 'text/xml; charset=utf-8');
-             res.send(body);
-        }
-    });
+            cb && res.jsonp(output) || res.send(output);
+        });
+    }else{
+        cb && res.jsonp(output) || res.send(output);
+    }
 }
 
 module.exports = router;

+ 16 - 87
routes/v2.js

@@ -3,115 +3,44 @@ const request = require('request');
 const router = express.Router();
 const disabledIP = require('../utils/disabledIP').list;
 const qs = require('qs');
+const utils = require('../utils/utils');
 
 router.get('/*', function(req, res, next) {
-    // let link = req.query.url || '';
-    // let cb = req.query.cb || '';
-    // getJSON(req, res, next);
     convert(req, res, next)
 });
 
 router.post('/*', function(req, res, next) {
-    // getJSON(req, res, next);
     convert(req, res, next)
 });
 
 const convert = (req, res, next) => {
-    let host = req.hostname;
-    let protocol = req.protocol;
-    let method = req.method.toUpperCase();
-    let ip = req.headers['x-real-ip'] ? req.headers['x-real-ip'] : req.ip.replace(/::ffff:/, '');
-    let _params = method === 'GET' ? req.query : req.body;
-    let cb = _params.callback;
-    let headers = req.headers;
-    let config = {
-        method: method,
-        gzip: true
-    };
-    let params = {};
-    for (let i in _params) {
-        let temp = _params[i];
-        if (i === 'url') {
-            let o = temp.split('?');
-            let uri = o[0]
-            config['uri'] = uri;
-            //headers['origin'] = uri;
-            headers['host'] = uri.replace(/^(http|https):\/\//g, '').split('/')[0];
-            if (o.length > 1) {
-                o[1].split('&').forEach(item => {
-                    let k = item.split('=');
-                    params[k[0]] = encodeURI(k[1]);
-                })
-            }
-        } else {
-            params[i] = temp;
-        }
-    }
-    if (method === 'POST') config['json'] = params;
-    else config.uri = `${config.uri}?${qs.stringify(params)}`;
-    config['headers'] = headers;
+    let params = utils.convert(req,res,next);
+    let config = params[0];
+    let protocol = params[1];
+    let host = params[2];
+    let cb = params[3];
     let output = {
-        data: {
-            IP: ip,
-            Info: 'Please Set URL Like This: ' + protocol + '://' + host + '/v1/?url=http[s]://YourWantProxyUrl.Com'
-        },
+        data: {},
         status: {
-            code: 200,
-            message: ''
+            code: -1,
+            message: 'Please Set URL Like This: ' + protocol + '://' + host + '/v2/?url=http[s]://YourWantProxyUrl.Com'
         }
     };
-    // res.send(config);
-    // return;
-
-    
-    if (config.uri) {
-        createServer(config).then(ret => {
+    if(config.uri){
+        utils.createServer(config).then(ret => {
             cb && res.jsonp(ret) || res.send(ret);
         }).catch(ex => {
             output = {
                 status: {
-                    code: -1,
-                    message: ex || 'unknow error, please checked your link'
+                    code: -2,
+                    message: Object.keys(ex).length>0 ? ex : 'unknow error, please checked your link' 
                 }
             }
             cb && res.jsonp(output) || res.send(output);
-        })
-    } else {
-        cb && res.jsonp(output) || res.send(output)
+        });
+    }else{
+        cb && res.jsonp(output) || res.send(output);
     }
-
-    // res.send(config)
-    // return;
-
-    // var options = {
-    //     uri: 'https://www.googleapis.com/urlshortener/v1/url',
-    //     method: 'get',
-    //     json: { "longUrl": "http://www.google.com/" }
-    // };
-    // console.log(config)
-    // createServer(config).then(ret => {
-    //     console.log(ret)
-    // }).catch(ex => {
-    //     console.log(ex)
-    // })
-
-    // switch(method){
-    //     case 'GET':
-    //         let originalUrl = req.originalUrl;
-    //         originalUrl = originalUrl.replace(/\/v1\?/,'').replace('?','&');
-
-    //         break;
-    // }
-    // if (link) {
-    //     let
-    //     switch (method) {
-    //         case 'GET':
-    //             link +=
-    //     }
-
-    // }
-    //console.log(req.headers)
-
 }
 
 const createServer = (config) => {

+ 35 - 50
routes/weather.js

@@ -1,64 +1,49 @@
-var express = require('express');
-var request = require('superagent');
-var router = express.Router();
-var base = 'http://op.juhe.cn/onebox/weather/query?key=e0540a109f5a73e9df2981cdeb9d106f';
-var cookie = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36' };
+let express = require('express');
+let request = require('superagent');
+let utils = require('../utils/utils');
+let router = express.Router();
+let base = 'http://op.juhe.cn/onebox/weather/query';
+let key = 'e0540a109f5a73e9df2981cdeb9d106f';
+let cookie = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36' };
 router.get('/*', function(req, res, next) {
-    getMobile(req, res, next);
+    getWeather(req, res, next);
 });
 router.post('/*', function(req, res, next) {
-    getMobile(req, res, next);
+    getWeather(req, res, next);
 });
 
-function getMobile(req, res, next) {
-    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 = {
+let getWeather = (req, res, next) => {
+    let params = utils.convert(req,res,next,base);
+    let config = params[0];
+    let protocol = params[1];
+    let host = params[2];
+    let cb = params[3];
+    let _params = params[4];
+    let output = {
         data: {},
         status: {
-            code: 200,
-            message: ''
+            code: -1,
+            message: ' city name is empty.'
         }
     };
-    request.get(url).set(cookie).end(function(err, response) {
-        var body = {};
-        if (response && response.text) {
-            body = response.text;
-        } else if (response && response.body) {
-            body = response.body;
-        }
-        if (type !== 'xml') {
-            if (typeof body === 'string') {
-                try {
-                    body = JSON.parse(body);
-                } catch (e) {
-                    output.status = {
-                        code: -1
-                    };
+    if(_params['cityname']){
+        config['uri'] = `${config['uri']}&key=${key}`;
+        config['gzip'] = '';
+        utils.createServer(config).then(ret => {
+            cb && res.jsonp(ret) || res.send(ret);
+        }).catch(ex => {
+            output = {
+                status: {
+                    code: -2,
+                    message: Object.keys(ex).length>0 ? ex : 'unknow error, please checked your city name' 
                 }
             }
-            output.data = (body.result && body.result.data ? body.result.data : body.result) || {};
-            if (!err && response.statusCode === 200 && body.error_code === 0) {
-                //
-            } else {
-                output.status = {
-                    code: -1,
-                    message: err || body.reason || 'Something bad happend.'
-                };
-            }
-            if (callback) {
-                return res.jsonp(output);
-            } else {
-                return res.json(output);
-            }
-        } else {
-            res.header('content-type', 'text/xml; charset=utf-8');
-            return res.send(body);
-        }
-    });
+            console.log(`cb:${cb}`)
+            cb && res.jsonp(output) || res.json(output);
+        });
+    }else{
+        cb && res.jsonp(output) || res.json(output);
+    }
 }
 
 module.exports = router;

+ 67 - 0
utils/utils.js

@@ -0,0 +1,67 @@
+const request = require('request');
+const qs = require('qs');
+/**
+ * 公共请求
+ * @param {Object} config 
+ * @return {Object} Promise
+ */
+const createServer = (config) => {
+    return new Promise((resolve, reject) => {
+        request(config, (err, ret, body) => {
+            console.log(config)
+            if (!err && ret.statusCode === 200) {
+                resolve(body)
+            } else {
+                reject(err)
+            }
+        })
+    })
+}
+/**
+ * 转换对象
+ * @param {Object} req 
+ * @param {Object} res 
+ * @param {Object} next 
+ * @return {Array} [config,protocol,host,cb]
+ */
+
+const convert = (req,res,next,url) => {
+    let host = req.hostname;
+    let protocol = req.protocol;
+    let method = req.method.toUpperCase();
+    let ip = req.headers['x-real-ip'] ? req.headers['x-real-ip'] : req.ip.replace(/::ffff:/, '');
+    let _params = method === 'GET' ? req.query : req.body;
+    let cb = _params.callback;
+    let headers = req.headers;
+    let config = {
+        method: method,
+        gzip: true
+    };
+    let params = {};
+    for (let i in _params) {
+        let temp = _params[i];
+        if (i === 'url') {
+            let o = temp.split('?');
+            let uri = o[0]
+            config['uri'] = uri;
+            headers['host'] = uri.replace(/^(http|https):\/\//g, '').split('/')[0];
+            if (o.length > 1) {
+                o[1].split('&').forEach(item => {
+                    let k = item.split('=');
+                    params[k[0]] = encodeURI(k[1]);
+                })
+            }
+        } else {
+            params[i] = temp;
+        }
+    }
+    if (method === 'POST') config['json'] = params;
+    else config['uri'] = config['uri'] ? `${config['uri']}?${qs.stringify(params)}` : (url?`${url}?${qs.stringify(params)}`:null) ;
+    config['headers'] = headers;
+    return [config,protocol,host,cb,params]
+}
+
+module.exports = {
+    convert,
+    createServer
+}