/** 
 * @module server 
 * @version 1.0
 * @requires express
 * @license open source
 * @author steve battle
 */

// see openshift blog
// https://blog.openshift.com/run-your-nodejs-projects-on-openshift-in-two-simple-steps/
// use PORT environment variable or default 8080
//console.log("PORT="+process.env.PORT);
//console.log("OPENSHIFT_NODEJS_PORT="+process.env.OPENSHIFT_NODEJS_PORT);
//var port = process.env.OPENSHIFT_NODEJS_PORT || 8080
var port = 8080;
// load the things we need

var express = require('express');
var ws = require('./wslib');
exports.ws = ws;

/**
 * Web service options. 
 * @var {Object} options 
 */

var conf = require('./config/dev.json');
var options = conf.options;
exports.options = options;

var app = express();
// set the view engine to ejs
app.set('view engine', 'ejs');
exports.app = app;

// embed path p for ws invocation
/** @param {String} p path 
 * @returns {Object} options
 * @author steve battle 
 */

function path(p) {
    options.path = p;
    return options;
}
exports.path = path;

// use res.render to load up an ejs view file
// app.get('/', function(request, response) {
//    response.render('index');
// });

// https://bristol.api.urbanthings.io/api/2.0/static/importsources

app.get("/", function (request, response) {
    ws.invoke(path("/api/2.0/static/importsources"), 
    (err,data) => {
        if (err) response.status(404).send("Oops!");
        else response.render('page1', data);
    }) ;
});

// https://bristol.api.urbanthings.io/api/2.0/static/agencies?importsource=TNDS

app.get("/page2", function (request, response) {
    var importsource = request.query.importsource;
    ws.invoke(path("/api/2.0/static/agencies?importsource=" + importsource), 
    (err,data) => {
        if (err) response.status(404).send("Oops!");
        else response.render('page2', data);
    }) ;
});

// https://bristol.api.urbanthings.io/api/2.0/static/routes/info/Source?agencyID=UK_TNDS_NOC_FBRI

app.get("/page3", function (request, response) {
    var agencyID = request.query.agencyID;
    ws.invoke(path("/api/2.0/static/routes/info/Source?agencyID=" + agencyID), 
    (err,data) => {
        if (err) response.status(404).send("Oops!");
        else response.render('page3', data);
    }) ;
});

if (process.env.NODE_ENV!="test") {
    app.listen(port);
    console.log('Listening on port '+port);
}