Explorar o código

add query mobile info

Dotos %!s(int64=8) %!d(string=hai) anos
pai
achega
8a0f6c885f
Modificáronse 4 ficheiros con 71 adicións e 7 borrados
  1. 3 0
      app.js
  2. 5 3
      routes/joke.js
  3. 57 0
      routes/mobile.js
  4. 6 4
      routes/v1.js

+ 3 - 0
app.js

@@ -21,6 +21,8 @@ var netease = require('./routes/netease');
 var v1 = require('./routes/v1');
 //joke
 var joke = require('./routes/joke');
+//mobile
+var mobile = require('./routes/mobile');
 //test
 var test = require('./routes/test');
 
@@ -101,6 +103,7 @@ app.use('/test', test);
 app.use('/v1', v1);
 app.use('/netease', netease);
 app.use('/joke', joke);
+app.use('/mobile', mobile);
 
 
 

+ 5 - 3
routes/joke.js

@@ -98,9 +98,11 @@ function getJOKE(req, res, next, op) {
                 return res.json(output);
             }
         } else {
-            var error = new Error(body.reason);
-            error.status = -1;
-            next(error);
+            var error = {
+                code: -1,
+                message: body.reason
+            };
+            res.json(error);
         }
     });
 }

+ 57 - 0
routes/mobile.js

@@ -0,0 +1,57 @@
+var express = require('express');
+var request = require('request');
+var router = express.Router();
+// 创建 application/x-www-form-urlencoded 编码解析
+var bodyParser = require('body-parser');
+var urlencodedParser = bodyParser.urlencoded({ extended: false });
+var key = "9f719ab7014f2cbdc7b394edf70d0f76";
+var url = 'http://apis.juhe.cn/mobile/get?key=' + key;
+var type = '';
+var callback = '';
+router.get('/', function(req, res, next) {
+    url += '&phone=' + req.query.phone;
+    type = req.query.type === 'xml' ? 'xml' : '';
+    callback = req.query.callback;
+    getMobile(req, res, next);
+});
+router.post('/', urlencodedParser, function(req, res, next) {
+    url += '&phone=' + req.body.phone;
+    type = req.body.type === 'xml' ? 'xml' : '';
+    callback = req.body.callback;
+    getMobile(req, res, next);
+});
+
+function getMobile(req, res, next) {
+    if (!!type) {
+        url += '&dtype=' + type;
+    }
+    request(url, function(err, response, body) {
+        if (!type) {
+            body = JSON.parse(body);
+            if (!err && response.statusCode === 200 && body.error_code === 0) {
+                var output = {
+                    data: body.result.data || body.result,
+                    status: {
+                        code: 200,
+                        message: ''
+                    }
+                };
+                if (callback) {
+                    return res.jsonp(output);
+                } else {
+                    return res.json(output);
+                }
+            } else {
+                var error = {
+                    code: -1,
+                    message: body.reason
+                };
+                res.json(error);
+            }
+        } else {
+            res.send(body);
+        }
+    });
+}
+
+module.exports = router;

+ 6 - 4
routes/v1.js

@@ -57,13 +57,15 @@ router.post('/*', function(req, res, next) {
 
 function getJSON(url, next, callback) {
     request(url, function(err, res, body) {
+        body = JSON.parse(body);
         if (!err && res.statusCode == 200) {
-            body = JSON.parse(body);
             callback && callback(body);
         } else {
-            var error = new Error(err);
-            error.status = -1;
-            next(error);
+            var error = {
+                code: -1,
+                message: body.reason
+            };
+            res.json(error);
         }
     });
 }