|
@@ -0,0 +1,94 @@
|
|
|
+'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');
|
|
|
+
|
|
|
+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,
|
|
|
+ body,
|
|
|
+ function (error, response, body) {
|
|
|
+ if (!error && response.statusCode == 200) {
|
|
|
+ if (result.length == 0) {
|
|
|
+ result = JSON.parse(body);
|
|
|
+ } else {
|
|
|
+ result.concat(JSON.parse(body));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (res) {
|
|
|
+ setCORSHeaders(res);
|
|
|
+ res.json(result);
|
|
|
+ res.end();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ console.log(error);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function query(url, req, res)
|
|
|
+{
|
|
|
+ request.post({
|
|
|
+ url: url,
|
|
|
+ headers: req.headers,
|
|
|
+ body: JSON.stringify(req.body)
|
|
|
+ },
|
|
|
+ function (error, response, body) {
|
|
|
+ if (!error && response.statusCode == 200) {
|
|
|
+ if (queryResult.length == 0) {
|
|
|
+ queryResult = JSON.parse(body);
|
|
|
+ } else {
|
|
|
+ queryResult.concat(JSON.parse(body));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (res) {
|
|
|
+ setCORSHeaders(res);
|
|
|
+ res.json(queryResult);
|
|
|
+ res.end();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ console.log(error);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+var result = [];
|
|
|
+app.all('/search', function (req, res) {
|
|
|
+ result = [];
|
|
|
+ search('http://mysql_jsonendpoint:8000/search', req.body);
|
|
|
+ search('http://mongodb_jsonendpoint:8000/search', req.body, res);
|
|
|
+});
|
|
|
+
|
|
|
+var queryResult = [];
|
|
|
+app.all('/query', function (req, res) {
|
|
|
+ queryResult = [];
|
|
|
+ query('http://mysql_jsonendpoint:8000/query', req);
|
|
|
+ query('http://mongodb_jsonendpoint:8000/query', req, res);
|
|
|
+});
|
|
|
+
|
|
|
+app.listen(8000);
|
|
|
+
|
|
|
+console.log("Server is listening to port 8000");
|