UNPKG

1.14 kBJavaScriptView Raw
1var middleware = require('./middleware')
2var extend = require('../extend')
3var querystringLite = require('../querystring-lite')
4
5function expandUrl (pattern, _params, qs) {
6 var params = _params || {}
7 var onlyQueryParams = extend({}, params)
8
9 var url = pattern.replace(/:([a-z_][a-z0-9_]*)\*/gi, function (_, id) {
10 var param = params[id]
11 delete onlyQueryParams[id]
12 return encodeURI(paramToString(param))
13 })
14
15 url = url.replace(/:([a-z_][a-z0-9_]*)/gi, function (_, id) {
16 var param = params[id]
17 delete onlyQueryParams[id]
18 return encodeURIComponent(paramToString(param))
19 })
20
21 var query = qs.stringify(onlyQueryParams)
22
23 if (query) {
24 return url + '?' + query
25 } else {
26 return url
27 }
28}
29
30function paramToString (p) {
31 if (p === undefined || p === null) {
32 return ''
33 } else {
34 return p
35 }
36}
37
38module.exports = middleware('querystring', function (request, next) {
39 if (request.options.params instanceof Object) {
40 var render = request.options.expandUrl || expandUrl
41 request.url = render(request.url, request.options.params, request.options.qs || querystringLite)
42 }
43
44 return next()
45})