summaryrefslogtreecommitdiffstats
path: root/afm-client/app/Backend/server.js
diff options
context:
space:
mode:
authorFulup Ar Foll <fulup@iot.bzh>2016-01-25 14:37:32 +0100
committerFulup Ar Foll <fulup@iot.bzh>2016-01-25 14:37:32 +0100
commit3ebdce373e134b70b129154d8033c1c628847a6c (patch)
tree76d84a1b1e6e6b474c7eecad2ea098ba0de69300 /afm-client/app/Backend/server.js
parent8d03b8c581ce64192e9d265597d262b59826cffd (diff)
First version
Diffstat (limited to 'afm-client/app/Backend/server.js')
-rw-r--r--afm-client/app/Backend/server.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/afm-client/app/Backend/server.js b/afm-client/app/Backend/server.js
new file mode 100644
index 0000000..11c5486
--- /dev/null
+++ b/afm-client/app/Backend/server.js
@@ -0,0 +1,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); \ No newline at end of file