node-red-contrib-snap4city-user
Version:
Nodes for Snap4city project, targeted to standard user (no developer)
131 lines (90 loc) • 3.26 kB
JavaScript
//server.js
//dipendenze
var express = require('express');
var request = require('request');
var bodyParser = require('body-parser');
var mysql = require('mysql');
//istanze
var app = express();
var router = express.Router();
//porta (default=3001)
var port = process.env.API_PORT || 3001;
//configurazione api
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,OPTIONS,POST,PUT,DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers');
res.setHeader('Cache-Control', 'no-cache');
next();
});
router.get('/', function (req, res) {
res.json({
message: 'API Initialized!'
});
});
//utilizzo configurazione router
app.use('/api', router);
//starts server
app.listen(port, function () {
console.log('api running on port ${port}');
});
router.route('/get-config-data')
.get(function (req, res) {
console.log("get-config-data");
/* SAMPLE OUTPUT
"ARDUINO_ST_4201": {
"contextBroker" : "orionUNIMI" ,
"ip": "159.149.129.184",
"port" : "1026",
"entity-type" : "Temperature",
"latitude" : "45.54",
"longitude" : "91.21",
},
*/
var mysql = require('mysql');
/*
var connection = mysql.createConnection({
host : '159.149.129.184',
port : 3306,
user : 'root',
password : '!!orion__',
database : 'contextbrokers'
});
*/
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'pass',
database: 'contextbrokers'
});
var configData = {};
var query = "SELECT sensors.id, sensors.type AS entityType, sensors.kind, sensors.protocol, sensors.longitude, sensors.latitude, sensors.contextBroker, contextbroker.name, contextbroker.type, contextbroker.ip, contextbroker.port FROM sensors LEFT JOIN contextbroker ON sensors.contextBroker = contextbroker.name ORDER BY id;"
connection.connect();
connection.query(query, function (err, rows, fields) {
if (err) throw err;
// if there is no error, you have the result
// iterate for all the rows in result
Object.keys(rows).forEach(function (key) {
var row = rows[key];
var entityData = {};
//console.log(row)
configData[row.id] = {};
configData[row.id]["contextBroker"] = row.contextBroker;
configData[row.id]["ip"] = row.ip;
configData[row.id]["port"] = row.port;
configData[row.id]["type"] = row.entityType;
configData[row.id]["latitude"] = row.latitude;
configData[row.id]["longitude"] = row.longitude;
configData[row.id]["kind"] = row.kind;
configData[row.id]["protocol"] = row.protocol;
});
connection.end();
res.json(configData);
});
});