joke.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. var express = require('express');
  2. var request = require('request');
  3. var router = express.Router();
  4. // 创建 application/x-www-form-urlencoded 编码解析
  5. var bodyParser = require('body-parser');
  6. var urlencodedParser = bodyParser.urlencoded({ extended: false });
  7. var key = "64a40e3c55e88cc8cd66a78d030bddce";
  8. /**
  9. * Get 请求
  10. */
  11. router.get('/', function(req, res, next) {
  12. var page = req.query.page || 1;
  13. var pagesize = req.query.pagesize || 1;
  14. var sort = req.query.sort || '';
  15. var time = req.query.time || '';
  16. var type = req.query.type;
  17. var url = "http://japi.juhe.cn/joke/";
  18. if (!!type && type === 'text') {
  19. url += "content/text.from?key=";
  20. } else {
  21. url += "img/text.from?key=";
  22. }
  23. url += key + "&page=" + page + "&pagesize=" + pagesize;
  24. if (!!sort && !!time) {
  25. url += "&sort=" + sort + "&time=" + time;
  26. url = url.replace(/text/, 'list');
  27. }
  28. if (!!sort && !!time) {
  29. url += "&sort=" + sort + "&time=" + time;
  30. }
  31. getJOKE(req, res, next, url);
  32. });
  33. /**
  34. * 随机获取
  35. */
  36. router.get('/rand', function(req, res, next) {
  37. var type = req.query.type || 'pic';
  38. if (type !== 'pic')
  39. type = null;
  40. var url = "http://v.juhe.cn/joke/randJoke.php?key=" + key;
  41. if (!!type) {
  42. url += "&type=" + type;
  43. }
  44. getJOKE(req, res, next, url);
  45. });
  46. /**
  47. * Post 请求
  48. */
  49. router.post('/', urlencodedParser, function(req, res, next) {
  50. var page = req.body.page || 1;
  51. var pagesize = req.body.pagesize || 1;
  52. var sort = req.body.sort || '';
  53. var time = req.body.time || '';
  54. var type = req.body.type;
  55. var url = "http://japi.juhe.cn/joke/";
  56. if (!!type && type === 'text') {
  57. url += "content/text.from?key=";
  58. } else {
  59. url += "img/text.from?key=";
  60. }
  61. url += key + "&page=" + page + "&pagesize=" + pagesize;
  62. if (!!sort && !!time) {
  63. url += "&sort=" + sort + "&time=" + time;
  64. url = url.replace(/text/, 'list');
  65. }
  66. getJOKE(req, res, next, url);
  67. });
  68. /**
  69. * 随机获取
  70. */
  71. router.post('/rand', urlencodedParser, function(req, res, next) {
  72. var type = req.body.type || 'pic';
  73. if (type !== 'pic') {
  74. type = null;
  75. }
  76. var url = "http://v.juhe.cn/joke/randJoke.php?key=" + key;
  77. if (!!type) {
  78. url += "&type=" + type;
  79. }
  80. getJOKE(req, res, next, url);
  81. });
  82. function getJOKE(req, res, next, url) {
  83. request(url, function(err, response, body) {
  84. body = JSON.parse(body);
  85. if (!err && response.statusCode === 200 && body.error_code === 0) {
  86. var output = {
  87. data: body.result.data || body.result,
  88. status: {
  89. code: 200,
  90. message: ''
  91. }
  92. };
  93. if (req.query.callback) {
  94. return res.jsonp(output);
  95. } else {
  96. return res.send(output);
  97. }
  98. } else {
  99. var error = new Error(body.reason);
  100. error.status = 404;
  101. next(error);
  102. }
  103. });
  104. }
  105. module.exports = router;