blob: 2c939deec58b6a656f20fd2ff503185cb670ee17 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
"use strict";
var express = require("express");
var fs = require("fs");
var path = require("path");
var bodyParser = require("body-parser");
var app = express();
var server = null;
var utils = require("./misc/utils");
require("./misc/shims");
function loadConfig(filename) {
try {
return JSON.parse(fs.readFileSync(filename).toString());
} catch (err) {
throw new Error("There has been an error parsing your JSON Configuration (" + filename + ") - " + err.toString());
}
}
(function start() {
console.log("loading configuration...");
var config = loadConfig(path.join(__dirname, "config.json")) || {};
console.log("setting up CORS...");
// CORS
app.all("*", function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With, X-TripPlanner-SessionId, X-TripPlanner-Created, X-TripPlanner-UserId, Content-Type");
next();
});
app.use(bodyParser.json()); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({
extended: true
}));
console.log("loading routing handlers...");
var routes = utils.listFiles((path.join(path.dirname(__filename), config.server.paths.api)).toString());
// load all routers
routes.forEach(function (route) {
require(route).registerRoute(app);
});
app.use(express.static(path.join(__dirname, config.server.paths.static)));
server = app.listen(config.server.port, function () {
console.log("Listening on port %d", server.address().port);
});
})();