123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- 'use strict';
- var express = require('express');
- var morgan = require('morgan');
- var bodyParser = require('body-parser');
- var _ = require('lodash');
- var app = express();
- var request = require('request');
- var timeout = process.env.TIMEOUT;
- app.use(morgan('combined'));
- app.use(bodyParser.json());
- function setCORSHeaders(res) {
- res.setHeader("Access-Control-Allow-Origin", "*");
- res.setHeader("Access-Control-Allow-Methods", "POST");
- res.setHeader("Access-Control-Allow-Headers", "accept, content-type");
- }
- app.all('/', function(req, res) {
- setCORSHeaders(res);
- res.send('https://grafana.com/plugins/grafana-simple-json-datasource\n');
- res.end();
- });
- function search(url, body, res)
- {
- request.post({
- url: url,
- body: JSON.stringify(body),
- timeout: timeout
- },
- function (error, response, body) {
- if (!error && response.statusCode == 200) {
- if (search_result.length == 0) {
- search_result = JSON.parse(body);
- } else {
- var values = JSON.parse(body);
- for (var i = 0; i < values.length; i++) {
- if (search_result.indexOf(values[i]) === -1) {
- search_result.push(values[i]);
- }
- }
- search_result.sort();
- }
-
- if (res !== undefined) {
- setCORSHeaders(res);
- res.json(search_result);
- res.end();
- }
- } else {
- console.log(error);
- }
- }
- );
- }
- function query(url, query_result, req, res)
- {
- request.post({
- url: url,
- headers: req.headers,
- body: JSON.stringify(req.body),
- timeout: timeout
- },
- function (error, response, body) {
- if (!error && response.statusCode == 200) {
- if (query_result.length == 0) {
- query_result = JSON.parse(body);
- } else {
- query_result = query_result.concat(JSON.parse(body));
- }
-
- if (res !== undefined) {
- setCORSHeaders(res);
- res.json(query_result);
- res.end();
- }
- } else {
- console.log(error);
- }
- }
- );
- }
- var search_result = [];
- app.all('/search', function (req, res) {
- search_result = [];
- search('http://mysql_jsonendpoint:8000/search', req.body);
- search('http://mongodb_jsonendpoint:8000/search', req.body, res);
- });
- app.all('/query', function (req, res) {
- var query_result = [];
- query('http://mysql_jsonendpoint:8000/query', query_result, req);
- query('http://mongodb_jsonendpoint:8000/query', query_result, req, res);
- });
- app.listen(8000);
- console.log("Server is listening to port 8000");
|