diff --git a/index.js b/index.js index 45bba9eee..902f4cc8a 100755 --- a/index.js +++ b/index.js @@ -99,6 +99,15 @@ request.defaults = function (options, requester) { var params = initParams(uri, opts, callback) params.options = extend(headerlessOptions(options), params.options) + if (typeof method === 'string') { + params.options.method = (method === 'del' ? 'DELETE' : method.toUpperCase()) + method = request[method] + } + + if (params.options.method === 'HEAD' && paramsHaveRequestBody(params)) { + throw new Error('HTTP HEAD requests MUST NOT include a request body.') + } + if (options.headers) { params.options.headers = getHeaders(params, options) } @@ -112,13 +121,13 @@ request.defaults = function (options, requester) { } var defaults = wrap(self) - 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.get = wrap('get') + defaults.patch = wrap('patch') + defaults.post = wrap('post') + defaults.put = wrap('put') + defaults.head = wrap('head') + defaults.del = wrap('del') + defaults.cookie = wrap(self.cookie) defaults.jar = self.jar defaults.defaults = self.defaults return defaults diff --git a/tests/test-defaults.js b/tests/test-defaults.js index f00ee3cdc..e4afa6d21 100644 --- a/tests/test-defaults.js +++ b/tests/test-defaults.js @@ -314,6 +314,30 @@ tape('test only function', function(t) { }) }) +tape('invoke defaults', function(t) { + var d = request.defaults({ + uri: s.url + '/get', + headers: { foo: 'bar' } + }) + d({}, function (e, r, b) { + t.equal(e, null) + t.equal(b, 'TESTING!') + t.end() + }) +}) + +tape('invoke convenience method from defaults', function(t) { + var d = request.defaults({ + uri: s.url + '/get', + headers: { foo: 'bar' } + }) + d.get({}, function (e, r, b) { + t.equal(e, null) + t.equal(b, 'TESTING!') + t.end() + }) +}) + tape('cleanup', function(t) { s.close(function() { t.end()