summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--package.json5
-rw-r--r--src/api.js26
-rw-r--r--src/routers/tmwa/middlewares/account.js4
3 files changed, 31 insertions, 4 deletions
diff --git a/package.json b/package.json
index 5dadaad..c7a56b0 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "tmw-api",
- "version": "2.0.0",
+ "version": "2.1.0",
"description": "TMW RESTful API",
"author": "The Mana World",
"license": "CC0-1.0",
@@ -18,6 +18,9 @@
},
"mailer": {
"from": "The Mana World <noreply@themanaworld.org>"
+ },
+ "logger": {
+ "webhook": ""
}
},
"repository": {
diff --git a/src/api.js b/src/api.js
index 33cfb42..cbd6c10 100644
--- a/src/api.js
+++ b/src/api.js
@@ -7,14 +7,38 @@ if (process.env.npm_package_config_port === undefined) {
process.exit(1);
}
+const send_hook = (msg) => {
+ const req = new Request(process.env.npm_package_config_logger_webhook, {
+ method: "POST",
+ cache: "no-cache",
+ redirect: "follow",
+ headers: {
+ "Accept": "application/json",
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ content: msg,
+ }),
+ });
+ fetch(req);
+ console.log(msg);
+};
+
+const logger = {
+ log: msg => send_hook(`${msg}`),
+ info: msg => send_hook(`ℹ ${msg}`),
+ warn: msg => send_hook(`⚠ ${msg}`),
+ error: msg => send_hook(`❌ ${msg}`),
+};
// config common to all routers:
api.locals = Object.assign({
rate_limiting: new Set(), // XXX: or do we want routers to each have their own rate limiter?
mailer: {
from: process.env.npm_package_config_mailer_from,
- }
+ },
+ logger: logger,
}, api.locals);
diff --git a/src/routers/tmwa/middlewares/account.js b/src/routers/tmwa/middlewares/account.js
index 3c82dbc..bc96b6c 100644
--- a/src/routers/tmwa/middlewares/account.js
+++ b/src/routers/tmwa/middlewares/account.js
@@ -142,7 +142,7 @@ const create_account = (req, res, next) => {
res.status(201).json({
status: "success"
});
- console.info("TMWA.account: an account was created: %s [%s]", req.body.username, req.ip);
+ req.app.locals.logger.info("TMWA.account: an account was created: %s [%s]", req.body.username, req.ip);
req.app.locals.rate_limiting.add(req.ip);
setTimeout(() => req.app.locals.rate_limiting.delete(req.ip), 300000);
@@ -155,7 +155,7 @@ const create_account = (req, res, next) => {
subject: "The Mana World account registration",
text: `Your account (\"${req.body.username}\") was created successfully.\nHave fun playing The Mana World!`
}, (err, info) => {
- console.info("TMWA.account: sent account creation email: %s %s", req.body.username, info.messageId);
+ req.app.locals.logger.info("TMWA.account: sent account creation email: %s %s", req.body.username, info.messageId);
});
});
child.stdin.end();