mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-04-14 12:04:03 +00:00
76 lines
2.7 KiB
JavaScript
76 lines
2.7 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
var express = require('express');
|
|
var app = express();
|
|
|
|
var port = process.env.PORT || 3000;
|
|
var loopServerPort = process.env.LOOP_SERVER_PORT || 5000;
|
|
var feedbackApiUrl = process.env.LOOP_FEEDBACK_API_URL ||
|
|
"https://input.allizom.org/api/v1/feedback";
|
|
var feedbackProductName = process.env.LOOP_FEEDBACK_PRODUCT_NAME || "Loop";
|
|
|
|
function getConfigFile(req, res) {
|
|
"use strict";
|
|
|
|
res.set('Content-Type', 'text/javascript');
|
|
res.send([
|
|
"var loop = loop || {};",
|
|
"loop.config = loop.config || {};",
|
|
"loop.config.serverUrl = 'http://localhost:" + loopServerPort + "';",
|
|
"loop.config.feedbackApiUrl = '" + feedbackApiUrl + "';",
|
|
"loop.config.feedbackProductName = '" + feedbackProductName + "';",
|
|
// XXX Update with the real marketplace url once the FxOS Loop app is
|
|
// uploaded to the marketplace bug 1053424
|
|
"loop.config.marketplaceUrl = 'http://fake-market.herokuapp.com/iframe-install.html'",
|
|
"loop.config.fxosApp = loop.config.fxosApp || {};",
|
|
"loop.config.fxosApp.name = 'Loop';",
|
|
"loop.config.fxosApp.manifestUrl = 'http://fake-market.herokuapp.com/apps/packagedApp/manifest.webapp';"
|
|
].join("\n"));
|
|
}
|
|
|
|
app.get('/content/config.js', getConfigFile);
|
|
|
|
// This lets /test/ be mapped to the right place for running tests
|
|
app.use('/', express.static(__dirname + '/../'));
|
|
|
|
// Magic so that the legal content works both in the standalone server
|
|
// and as static content in the loop-client repo
|
|
app.use('/', express.static(__dirname + '/content/'));
|
|
app.use('/shared', express.static(__dirname + '/../content/shared/'));
|
|
app.get('/config.js', getConfigFile);
|
|
|
|
// This lets /content/ be mapped right for the static contents.
|
|
app.use('/', express.static(__dirname + '/'));
|
|
// This lets standalone components load images into the UI showcase
|
|
app.use('/standalone/content', express.static(__dirname + '/../content'));
|
|
|
|
var server = app.listen(port);
|
|
|
|
var baseUrl = "http://localhost:" + port + "/";
|
|
|
|
console.log("Serving repository root over HTTP at " + baseUrl);
|
|
console.log("Static contents are available at " + baseUrl + "content/");
|
|
console.log("Tests are viewable at " + baseUrl + "test/");
|
|
console.log("Use this for development only.");
|
|
|
|
// Handle SIGTERM signal.
|
|
function shutdown(cb) {
|
|
"use strict";
|
|
|
|
try {
|
|
server.close(function () {
|
|
process.exit(0);
|
|
if (cb !== undefined) {
|
|
cb();
|
|
}
|
|
});
|
|
|
|
} catch (ex) {
|
|
console.log(ex + " while calling server.close)");
|
|
}
|
|
}
|
|
|
|
process.on('SIGTERM', shutdown);
|