| /* | |
| * 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); | |
| }); | |
| })(); |