Skip to content
This repository has been archived by the owner on Jan 17, 2023. It is now read-only.

Commit

Permalink
Fix #1839, move errorResponse, simpleResponse, and jsResponse to a ne…
Browse files Browse the repository at this point in the history
…w module

Move raven into its own module as well
  • Loading branch information
ianb committed Nov 1, 2016
1 parent 55c612d commit 6a06eb2
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 66 deletions.
6 changes: 3 additions & 3 deletions server/src/exporter.js
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ exports.setup = function (app) {
launchWget(req.deviceId).then(() => {
res.redirect("/export/status?started=" + encodeURIComponent(Date.now()));
}).catch((e) => {
require("./server").errorResponse(res, "Failed to launch export", e);
require("./responses").errorResponse(res, "Failed to launch export", e);
});
});

Expand All @@ -242,7 +242,7 @@ exports.setup = function (app) {
req.keepTime = keepTime;
require("./views/export").renderStatus(req, res);
}).catch((e) => {
require("./server").errorResponse(res, "Failed to get status", e);
require("./responses").errorResponse(res, "Failed to get status", e);
});
});

Expand All @@ -266,7 +266,7 @@ exports.setup = function (app) {
removeExportPath(dir).then(() => {
res.redirect("/export?deleted");
}).catch((e) => {
require("./server").errorResponse(res, "Failed to remove directory", e);
require("./responses").errorResponse(res, "Failed to remove directory", e);
});
});

Expand Down
2 changes: 1 addition & 1 deletion server/src/pages/shot/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ app.get("/:id/:domain", function (req, res) {
const page = require("./page").page;
reactrender.render(req, res, page);
}).catch(function (err) {
require("../../server").errorResponse(res, "Error rendering page:", err);
require("../../responses").errorResponse(res, "Error rendering page:", err);
});
});
29 changes: 29 additions & 0 deletions server/src/ravenclient.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
const config = require("./config").getProperties();
const raven = require("raven");

let ravenClient = null;

if (config.sentryDSN) {
ravenClient = new raven.Client(config.sentryDSN);
ravenClient.patchGlobal();
}

exports.sendRavenMessage = function (req, message, options) {
if (! ravenClient) {
return;
}
options = options || {};
options.extra = options.extra || {};
options.extra.path = req.originalUrl;
options.extra.method = req.method;
options.extra.userAgent = req.headers['user-agent'];
options.extra.referrer = req.headers['referer'];
options.extra.authenticated = !!req.deviceId;
ravenClient.captureMessage(message, options);
};

exports.captureRavenException = function () {
if (ravenClient) {
return ravenClient.captureException.apply(ravenClient, arguments);
}
};
32 changes: 32 additions & 0 deletions server/src/responses.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
const config = require("./config").getProperties();
const { captureRavenException } = require("./ravenclient");

exports.simpleResponse = function (res, message, status) {
status = status || 200;
res.header("Content-Type", "text/plain; charset=utf-8");
res.status(status);
res.send(message);
};

exports.jsResponse = function (res, jsstring) {
res.header("Content-Type", "application/javascript; charset=utf-8")
res.send(jsstring);
};

exports.errorResponse = function (res, message, err) {
res.header("Content-Type", "text/plain; charset=utf-8");
res.status(500);
if (config.showStackTraces) {
if (err) {
message += "\n" + err;
if (err.stack) {
message += "\n\n" + err.stack;
}
}
res.send(message);
} else {
res.send("Server error");
}
console.error(`Error: ${message}`, err+"", err);
captureRavenException(err);
};
66 changes: 4 additions & 62 deletions server/src/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,14 @@ const gaActivation = require("./ga-activation");
const genUuid = require("nodify-uuid");
const AWS = require("aws-sdk");
const vhost = require("vhost");
const raven = require("raven");
const escapeHtml = require("escape-html");
const validUrl = require("valid-url");
const { createProxyUrl } = require("./proxy-url");
const statsd = require("./statsd");
const { notFound } = require("./pages/not-found/server");
const { cacheTime, setCache } = require("./caching");
const { captureRavenException, sendRavenMessage } = require("./ravenclient");
const { errorResponse, simpleResponse, jsResponse } = require("./responses");

const PROXY_HEADER_WHITELIST = {
"content-type": true,
Expand Down Expand Up @@ -115,26 +116,6 @@ if (config.useS3) {
});
}

let ravenClient = null;

if (config.sentryDSN) {
ravenClient = new raven.Client(config.sentryDSN);
ravenClient.patchGlobal();
}

function sendRavenMessage(req, message, options) {
if (! ravenClient) {
return;
}
options = options || {};
options.extra = options.extra || {};
options.extra.path = req.originalUrl;
options.extra.method = req.method;
options.extra.userAgent = req.headers['user-agent'];
options.extra.referrer = req.headers['referer'];
options.extra.authenticated = !!req.deviceId;
ravenClient.captureMessage(message, options);
}

function initDatabase() {
dbschema.createTables().then(() => {
Expand All @@ -144,9 +125,7 @@ function initDatabase() {
}).catch((e) => {
console.error("Error initializing database:", e, e.stack);
console.warn("Trying again in 60 seconds");
if (ravenClient) {
ravenClient.captureException(e);
}
captureRavenException(e);
setTimeout(initDatabase, 60000);
});
}
Expand Down Expand Up @@ -958,9 +937,7 @@ app.post('/api/fxa-oauth/token', function (req, res, next) {
app.use(function (err, req, res, next) {
console.error("Error:", err);
console.error(err.stack);
if (ravenClient) {
ravenClient.captureException(err);
}
captureRavenException(err);
if (err.isAppError) {
let { statusCode, headers, payload } = err.output;
res.status(statusCode);
Expand Down Expand Up @@ -1097,41 +1074,6 @@ contentApp.get("/proxy", function (req, res) {
subreq.end();
});

function simpleResponse(res, message, status) {
status = status || 200;
res.header("Content-Type", "text/plain; charset=utf-8");
res.status(status);
res.send(message);
}

function jsResponse(res, jsstring) {
res.header("Content-Type", "application/javascript; charset=utf-8")
res.send(jsstring);
}

function errorResponse(res, message, err) {
res.header("Content-Type", "text/plain; charset=utf-8");
res.status(500);
if (config.showStackTraces) {
if (err) {
message += "\n" + err;
if (err.stack) {
message += "\n\n" + err.stack;
}
}
res.send(message);
} else {
res.send("Server error");
}
console.error(`Error: ${message}`, err+"", err);
if (ravenClient) {
ravenClient.captureException(err);
}
}

exports.simpleResponse = simpleResponse;
exports.errorResponse = errorResponse;

linker.init().then(() => {
if (config.useVirtualHosts) {
const mainapp = express();
Expand Down

0 comments on commit 6a06eb2

Please sign in to comment.