Skip to content

Commit

Permalink
Merge pull request #1430 from tikotzky/fix-recursive-requester
Browse files Browse the repository at this point in the history
Fix recursive requester
  • Loading branch information
nylen committed Feb 17, 2015
2 parents b8de4a2 + 09358c3 commit a822e64
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 25 deletions.
39 changes: 14 additions & 25 deletions index.js
Expand Up @@ -54,47 +54,40 @@ function request (uri, options, callback) {
return new request.Request(options)
}

function requester(params) {
if(typeof params.options._requester === 'function') {
return params.options._requester
}
return request
}

request.get = function (uri, options, callback) {
var params = initParams(uri, options, callback)
params.options.method = 'GET'
return requester(params)(params.uri || null, params.options, params.callback)
return this(params.uri || null, params.options, params.callback)
}

request.head = function (uri, options, callback) {
var params = initParams(uri, options, callback)
params.options.method = 'HEAD'
return requester(params)(params.uri || null, params.options, params.callback)
return this(params.uri || null, params.options, params.callback)
}

request.post = function (uri, options, callback) {
var params = initParams(uri, options, callback)
params.options.method = 'POST'
return requester(params)(params.uri || null, params.options, params.callback)
return this(params.uri || null, params.options, params.callback)
}

request.put = function (uri, options, callback) {
var params = initParams(uri, options, callback)
params.options.method = 'PUT'
return requester(params)(params.uri || null, params.options, params.callback)
return this(params.uri || null, params.options, params.callback)
}

request.patch = function (uri, options, callback) {
var params = initParams(uri, options, callback)
params.options.method = 'PATCH'
return requester(params)(params.uri || null, params.options, params.callback)
return this(params.uri || null, params.options, params.callback)
}

request.del = function (uri, options, callback) {
var params = initParams(uri, options, callback)
params.options.method = 'DELETE'
return requester(params)(params.uri || null, params.options, params.callback)
return this(params.uri || null, params.options, params.callback)
}

request.jar = function (store) {
Expand Down Expand Up @@ -130,25 +123,21 @@ request.defaults = function (options, requester) {
}

if (isFunction(requester)) {
if (method === self) {
method = requester
} else {
params.options._requester = requester
}
method = requester
}

return method(params.options, params.callback)
}
}

var defaults = wrap(self)
defaults.get = wrap(self.get)
defaults.patch = wrap(self.patch)
defaults.post = wrap(self.post)
defaults.put = wrap(self.put)
defaults.head = wrap(self.head)
defaults.del = wrap(self.del)
defaults.cookie = wrap(self.cookie)
defaults.get = self.get
defaults.patch = self.patch
defaults.post = self.post
defaults.put = self.put
defaults.head = self.head
defaults.del = self.del
defaults.cookie = self.cookie
defaults.jar = self.jar
defaults.defaults = self.defaults
return defaults
Expand Down
29 changes: 29 additions & 0 deletions tests/test-defaults.js
Expand Up @@ -213,6 +213,35 @@ tape('recursive defaults', function(t) {
})
})

tape('recursive defaults requester', function(t) {
t.plan(4)

var defaultsOne = request.defaults({}, function(options, callback) {
var headers = options.headers || {}
headers.foo = 'bar1'
options.headers = headers

request(options, callback)
})
, defaultsTwo = defaultsOne.defaults({}, function(options, callback) {
var headers = options.headers || {}
headers.baz = 'bar2'
options.headers = headers

defaultsOne(options, callback)
})

defaultsOne.get(s.url + '/get_recursive1', function (e, r, b) {
t.equal(e, null)
t.equal(b, 'TESTING!')
})

defaultsTwo.get(s.url + '/get_recursive2', function (e, r, b) {
t.equal(e, null)
t.equal(b, 'TESTING!')
})
})

tape('test custom request handler function', function(t) {
t.plan(2)

Expand Down

0 comments on commit a822e64

Please sign in to comment.