Browse Source

add Joke apis

dotos 8 years ago
parent
commit
df3c0b69f8
3 changed files with 60 additions and 15 deletions
  1. 0 1
      app.js
  2. 59 13
      routes/joke.js
  3. 1 1
      routes/test.js

+ 0 - 1
app.js

@@ -54,7 +54,6 @@ app.all('*', function(req, res, next) {
     res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
     res.header("X-Powered-By", '1.0.0');
     res.header("Vary", "Origin");
-
     var protocol = req.protocol;
     var host = req.hostname;
     var ip = req.ip.replace(/::ffff:/, '');

+ 59 - 13
routes/joke.js

@@ -13,10 +13,34 @@ router.get('/', function(req, res, next) {
     var pagesize = req.query.pagesize || 1;
     var sort = req.query.sort || '';
     var time = req.query.time || '';
-    var url = "http://japi.juhe.cn/joke/img/text.from?key=" + key + "&page=" + page + "&pagesize=" + pagesize;
+    var type = req.query.type;
+    var url = "http://japi.juhe.cn/joke/";
+    if (!!type && type === 'text') {
+        url += "content/text.from?key=";
+    } else {
+        url += "img/text.from?key=";
+    }
+    url += key + "&page=" + page + "&pagesize=" + pagesize;
+    if (!!sort && !!time) {
+        url += "&sort=" + sort + "&time=" + time;
+        url = url.replace(/text/, 'list');
+    }
     if (!!sort && !!time) {
-        url = "http://japi.juhe.cn/joke/img/list.from?key=" + key + "&page=" + page + "&pagesize=" + pagesize + "&sort=" + sort + "&time=" + time;
+        url += "&sort=" + sort + "&time=" + time;
+    }
+
+    getJOKE(req, res, next, url);
+});
+/**
+ * 随机获取
+ */
+router.get('/rand', function(req, res, next) {
+    var type = req.query.type || '';
+    var url = "http://v.juhe.cn/joke/randJoke.php?key=" + key;
+    if (!!type) {
+        url += "&type=" + type;
     }
+    console.log(url);
     getJOKE(req, res, next, url);
 });
 
@@ -24,20 +48,42 @@ router.get('/', function(req, res, next) {
  * Post 请求
  */
 router.post('/', urlencodedParser, function(req, res, next) {
-    var params = {
-        page: req.body.page || 1,
-        pagesize: req.body.pagesize || 1,
-        sort:req.body.sort || '',
-        time:req.body.time || '' 
-    };
+    var page = req.body.page || 1;
+    var pagesize = req.body.pagesize || 1;
+    var sort = req.body.sort || '';
+    var time = req.body.time || '';
+    var type = req.body.type;
+    var url = "http://japi.juhe.cn/joke/";
+    if (!!type && type === 'text') {
+        url += "content/text.from?key=";
+    } else {
+        url += "img/text.from?key=";
+    }
+    url += key + "&page=" + page + "&pagesize=" + pagesize;
+    if (!!sort && !!time) {
+        url += "&sort=" + sort + "&time=" + time;
+        url = url.replace(/text/, 'list');
+    }
+    getJOKE(req, res, next, url);
+});
+/**
+ * 随机获取
+ */
+router.post('/rand', function(req, res, next) {
+    var type = req.body.type || '';
+    var url = "http://v.juhe.cn/joke/randJoke.php?key=" + key;
+    if (!!type) {
+        url += "&type=" + type;
+    }
+    getJOKE(req, res, next, url);
 });
 
 function getJOKE(req, res, next, url) {
-    request(url, function(err, res, body) {
-        if (!err && res.statusCode == 200) {
-            body = JSON.parse(body);
+    request(url, function(err, response, body) {
+        body = JSON.parse(body);
+        if (!err && response.statusCode === 200 && body.error_code === 0) {
             var output = {
-                data: body,
+                data: body.result.data || body.result,
                 status: {
                     code: 200,
                     message: ''
@@ -49,7 +95,7 @@ function getJOKE(req, res, next, url) {
                 return res.send(output);
             }
         } else {
-            var error = new Error(err);
+            var error = new Error(body.reason);
             error.status = 404;
             next(error);
         }

+ 1 - 1
routes/test.js

@@ -25,7 +25,7 @@ router.get('/', function(req, res, next) {
     };
 
     request.post('http://localhost:3000/joke/', { form: mydata }, function(err, resp, body) {
-        console.log(body);
+        res.send(body);
     });
 });
 module.exports = router;