Gitter migration: Setup redirects (rollout pt. 3)
[gitter.git] / server / handlers / uri-context / uri-context-resolver-middleware.js
blob579f30186308a2a1642f382ad1705b5869eac59b
1 'use strict';
3 var roomContextService = require('gitter-web-rooms/lib/room-context-service');
4 var debug = require('debug')('gitter:app:uri-context-resolver-middleware');
6 function normaliseUrl(params) {
7   if (params.roomPart3) {
8     return params.roomPart1 + '/' + params.roomPart2 + '/' + params.roomPart3;
9   }
11   if (params.roomPart2) {
12     return params.roomPart1 + '/' + params.roomPart2;
13   }
15   return params.roomPart1;
18 function uriContextResolverMiddleware(req, res, next) {
19   var uri = normaliseUrl(req.params);
20   debug('Looking up normalised uri %s', uri);
22   return roomContextService
23     .findContextForUri(req.user, uri)
24     .then(function(uriContext) {
25       if (uriContext.ownUrl) {
26         res.relativeRedirect('/home/explore');
27         return null;
28       }
30       req.troupe = uriContext.troupe;
31       req.group = uriContext.group;
32       req.uriContext = uriContext;
34       next();
35       return null;
36     })
37     .catch(next);
40 module.exports = uriContextResolverMiddleware;