From 21167ce88ea4ad594d213d3a49115f0ebbaed745 Mon Sep 17 00:00:00 2001 From: Sean Fridman Date: Mon, 6 Apr 2015 19:08:07 -0400 Subject: Fix god forsaken trailing slashed issue --- app/node_modules/okserver/index.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'app/node_modules/okserver/index.js') diff --git a/app/node_modules/okserver/index.js b/app/node_modules/okserver/index.js index a3219fa..6c19a9b 100644 --- a/app/node_modules/okserver/index.js +++ b/app/node_modules/okserver/index.js @@ -13,16 +13,24 @@ function OKServer(options) { var views = options.views; var express = options.express; var app = this._app = options.app; + var router = express.Router({ + strict: app.get('strict routing') + }); Object.keys(views) + // Sort such that more general routes are matched last .sort(specificity) + // Add the views .forEach(function(route) { - // We want to enforce trailing slashes for middleware - routeNoSlash = route.charAt(route.length - 1) === '/' ? - route.slice(0, route.length - 1) : route; - app.all(routeNoSlash, redirect(routeNoSlash)); - app.use(routeNoSlash + '/', views[route].middleware()); + var view = views[route]; + var mount = view.mount; + if (!mount) + throw Error('View doesn\'t specify a mount point'); + var handler = view.middleware(); + if (!handler) + throw new Error('View doesn\'t provide middleware'); + router[mount](route, handler); }); - // This enforces trailing slashes for stuff that isn't middleware + app.use(router); app.use(slash()); /** -- cgit v1.2.3-70-g09d2