From 89fffae172007caa467a91d672f04c01073a5e35 Mon Sep 17 00:00:00 2001 From: Isao Yagi Date: Tue, 24 Apr 2012 16:31:13 -0700 Subject: [PATCH] [Bug 5445839] route params as object instead of query string. Patch converted string to object in the wrong place (throws on every request). Mis- leading code in mojito-router.js removed, fix was applied to route-maker.common.js --- source/lib/app/autoload/route-maker.common.js | 4 +++- source/lib/app/middleware/mojito-router.js | 10 ++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/source/lib/app/autoload/route-maker.common.js b/source/lib/app/autoload/route-maker.common.js index b1e5d0148..f69c2fd75 100644 --- a/source/lib/app/autoload/route-maker.common.js +++ b/source/lib/app/autoload/route-maker.common.js @@ -135,7 +135,9 @@ YUI.add('mojito-route-maker', function(Y, NAME) { } } - route.params = Y.QueryString.parse(route.params); + if (typeof route.params !== 'object') { + route.params = Y.QueryString.parse(String(route.params)); + } build = []; for (i in route.requires) { diff --git a/source/lib/app/middleware/mojito-router.js b/source/lib/app/middleware/mojito-router.js index ae4dff5a2..c493c2aa9 100644 --- a/source/lib/app/middleware/mojito-router.js +++ b/source/lib/app/middleware/mojito-router.js @@ -8,8 +8,7 @@ /*jslint anon:true, sloppy:true, nomen:true*/ -var qs = require('querystring'), - logger, +var logger, liburl = require('url'), RX_END_SLASHES = /\/+$/, NAME = 'UriRouter'; @@ -99,9 +98,12 @@ Router.prototype = { // of instance // command.action = routeMatch.call[1]; command.context = req.context; + + //routeMatch.param is converted to object in route-maker.common.js + //and is never a string here. i.e. this assert always passes: + //require('assert').ok(typeof routeMatch.param !== 'string'); command.params = { - route: simpleMerge(routeMatch.query, - qs.parse(routeMatch.param)), + route: simpleMerge(routeMatch.query, routeMatch.param), url: query || {}, body: req.body || {}, file: {} // FUTURE: add multi-part file data here