index.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. 'use strict';
  2. var express = require('express');
  3. var morgan = require('morgan');
  4. var bodyParser = require('body-parser');
  5. var _ = require('lodash');
  6. var app = express();
  7. var request = require('request');
  8. app.use(morgan('combined'));
  9. app.use(bodyParser.json());
  10. function setCORSHeaders(res) {
  11. res.setHeader("Access-Control-Allow-Origin", "*");
  12. res.setHeader("Access-Control-Allow-Methods", "POST");
  13. res.setHeader("Access-Control-Allow-Headers", "accept, content-type");
  14. }
  15. app.all('/', function(req, res) {
  16. setCORSHeaders(res);
  17. res.send('https://grafana.com/plugins/grafana-simple-json-datasource\n');
  18. res.end();
  19. });
  20. function search(url, body, res)
  21. {
  22. request.post(
  23. url,
  24. body,
  25. function (error, response, body) {
  26. if (!error && response.statusCode == 200) {
  27. if (result.length == 0) {
  28. result = JSON.parse(body);
  29. } else {
  30. result.concat(JSON.parse(body));
  31. }
  32. if (res) {
  33. setCORSHeaders(res);
  34. res.json(result);
  35. res.end();
  36. }
  37. } else {
  38. console.log(error);
  39. }
  40. }
  41. );
  42. }
  43. function query(url, req, res)
  44. {
  45. request.post({
  46. url: url,
  47. headers: req.headers,
  48. body: JSON.stringify(req.body)
  49. },
  50. function (error, response, body) {
  51. if (!error && response.statusCode == 200) {
  52. if (queryResult.length == 0) {
  53. queryResult = JSON.parse(body);
  54. } else {
  55. queryResult.concat(JSON.parse(body));
  56. }
  57. if (res) {
  58. setCORSHeaders(res);
  59. res.json(queryResult);
  60. res.end();
  61. }
  62. } else {
  63. console.log(error);
  64. }
  65. }
  66. );
  67. }
  68. var result = [];
  69. app.all('/search', function (req, res) {
  70. result = [];
  71. search('http://mysql_jsonendpoint:8000/search', req.body);
  72. search('http://mongodb_jsonendpoint:8000/search', req.body, res);
  73. });
  74. var queryResult = [];
  75. app.all('/query', function (req, res) {
  76. queryResult = [];
  77. query('http://mysql_jsonendpoint:8000/query', req);
  78. query('http://mongodb_jsonendpoint:8000/query', req, res);
  79. });
  80. app.listen(8000);
  81. console.log("Server is listening to port 8000");