]> git.cworth.org Git - empires-server/commitdiff
lmno: Generalize middleware to not be specific to empires
authorCarl Worth <cworth@cworth.org>
Sun, 24 May 2020 20:39:01 +0000 (13:39 -0700)
committerCarl Worth <cworth@cworth.org>
Sun, 24 May 2020 20:48:51 +0000 (13:48 -0700)
We're planning to extend LMNO past the original single game of Empires
soon. So, we adjust this middleware here to work for any game engine
prior to the game ID in the path, (and simply preserve that engine
string in the result of the redirect).

lmno.js

diff --git a/lmno.js b/lmno.js
index c990cac3a290be99bf16d57f7d581442970bf4f4..61c7f5cce5eed2f4cb84c1dd75d4e779ff9888b1 100644 (file)
--- a/lmno.js
+++ b/lmno.js
@@ -136,14 +136,15 @@ app.get('/[a-zA-Z0-9]{4}', (request, response) => {
 });
 
 /* LMNO middleware to lookup the game. */
-app.use('/empires/:game_id([a-zA-Z0-9]{4})', (request, response, next) => {
+app.use('/:engine([^/]+)/:game_id([a-zA-Z0-9]{4})', (request, response, next) => {
+  const engine = request.params.engine;
   const game_id = request.params.game_id;
   const canon_id = lmno_canonize(game_id);
 
   /* Redirect user to page with the canonical ID in it. */
   if (game_id !== canon_id) {
-    const new_url = request.originalUrl.replace("/empires/" + game_id,
-                                                "/empires/" + canon_id);
+    const new_url = request.originalUrl.replace(`/${engine}/${game_id}`,
+                                                `/${engine}/${canon_id}`);
     response.redirect(301, new_url);
     return;
   }