summaryrefslogtreecommitdiffstats
path: root/afb-client/app/Backend/server.js
blob: 11c548616f9202787e6356cd1fd67ca6275982c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
var config  = require('../etc/_Config');
var trace   = require('../etc/_Trace');
var RestAPI = require('./RestApis/_all');
var fs      = require('fs');

var express        = require('express');
var session        = require('express-session');
var bodyParser     = require('body-parser');
var methodOverride = require('method-override');

// instanciate express HTTP server
var app = express();

// chose dev or prod rootdir
var staticdir = 'dist.dev';
if (process.env.MODE) staticdir = process.env.MODE === 'prod' ? 'dist.prod' : 'dist.dev';
else staticdir = config.MODE === 'prod' ? 'dist.prod' : 'dist.dev';

var rootdir = __dirname + '/../../' + staticdir;
if (!fs.existsSync(rootdir)) {
    console.log("### HOOPS Rootdir not found rootdir=%s\n", rootdir);
    process.exit();
}

// get all data/stuff of the body (POST) parameters
app.use(bodyParser.json()); // parse application/json
app.use(methodOverride('X-HTTP-Method-Override')); // override with the X-HTTP-Method-Override header in the request. simulate DELETE/PUT

// This handle should contain enough for application logic
var serverHandle = {
  app  :  app,           // Express server
  config: config,
  trace:  config.DBG_LVL > 0 ? trace : function(){/*empty function */}
};

// set the static files location /public/img will be /img for users
app.use(express.static(rootdir)); 

// Load Mock APIs
var apirest = new RestAPI(serverHandle);

app.get(config.URLBASE, function (req, res) {
    console.log ("Angular OPA %s", req.originalUrl);
    res.sendfile(config.URLBASE +"index.html", {root: rootdir});
});

// rewrite requested URL to include Angular hashPrompt and set session flag for RestAPI
app.get(config.URLBASE + '*', function(req, res) {
    // Warning redirect should be under exact "/opa/#!page" or a redirect to home will be done
    var redirect=config.URLBASE + '#!' + req.originalUrl.substring(config.URLBASE.length);
    res.redirect(redirect);
    console.log ("Redirect to: ", redirect);
});


// start app ===============================================
app.listen(config.EXPRESS_PORT, config.EXPRESS_HOST);
console.log('Server Listening http://%s:%d (rootdir=%s)', config.EXPRESS_HOST, config.EXPRESS_PORT, rootdir);