Loading lib/rp.js +49 −5 Original line number Original line Diff line number Diff line Loading @@ -25,9 +25,10 @@ function rp(options) { return buildPromise(c); return buildPromise(c); } } function buildPromise (c) { function buildPromise (c, requester) { var _requester = requester || request; return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) { request(c, function (error, response, body) { _requester(c, function (error, response, body) { if (error) { if (error) { reject({ reject({ error: error, error: error, Loading Loading @@ -71,7 +72,7 @@ var methodNameLookup = { }; }; Object.keys(request).filter(function(key){ Object.keys(request).filter(function(key){ return typeof(request[key]) === "function" && !wrapMethods.indexOf(key) +1; return typeof(request[key]) === "function" && !wrapMethods.indexOf(key) +1 && key !== 'defaults'; }).forEach(function(key){ }).forEach(function(key){ rp[key] = request[key].bind(request); rp[key] = request[key].bind(request); }); }); Loading @@ -82,11 +83,54 @@ Object.keys(request).filter(function(key){ rp[key] = defaultHttpMethod; rp[key] = defaultHttpMethod; }); }); function defaultHttpMethod(){ rp.defaults = function (options, requester) { var def = function (method) { var d = function (uri, opts, callback) { var params = request.initParams(uri, opts, callback) Object.keys(options).forEach(function (key) { if (key !== 'headers' && params.options[key] === undefined) { params.options[key] = options[key] } }) if (options.headers) { var headers = {} util._extend(headers, options.headers) util._extend(headers, params.options.headers) params.options.headers = headers } if(typeof requester === 'function') { if(method === request) { method = requester } else { params.options._requester = requester } } return buildPromise(params.options, method); } return d } var de = def(request) de.get = def(request.get) de.patch = def(request.patch) de.post = def(request.post) de.put = def(request.put) de.head = def(request.head) de.del = def(request.del) de.cookie = def(request.cookie) de.jar = request.jar return de } function getParams(){ var args = Array.prototype.slice.call(arguments, 0); var args = Array.prototype.slice.call(arguments, 0); var params = request.initParams.apply(request, args); var params = request.initParams.apply(request, args); params.method = methodNameLookup[key]; params.method = methodNameLookup[key]; return buildPromise(params); return params; } function defaultHttpMethod(){ return buildPromise(getParams.apply(null, arguments)); } } module.exports = rp; module.exports = rp; Loading
lib/rp.js +49 −5 Original line number Original line Diff line number Diff line Loading @@ -25,9 +25,10 @@ function rp(options) { return buildPromise(c); return buildPromise(c); } } function buildPromise (c) { function buildPromise (c, requester) { var _requester = requester || request; return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) { request(c, function (error, response, body) { _requester(c, function (error, response, body) { if (error) { if (error) { reject({ reject({ error: error, error: error, Loading Loading @@ -71,7 +72,7 @@ var methodNameLookup = { }; }; Object.keys(request).filter(function(key){ Object.keys(request).filter(function(key){ return typeof(request[key]) === "function" && !wrapMethods.indexOf(key) +1; return typeof(request[key]) === "function" && !wrapMethods.indexOf(key) +1 && key !== 'defaults'; }).forEach(function(key){ }).forEach(function(key){ rp[key] = request[key].bind(request); rp[key] = request[key].bind(request); }); }); Loading @@ -82,11 +83,54 @@ Object.keys(request).filter(function(key){ rp[key] = defaultHttpMethod; rp[key] = defaultHttpMethod; }); }); function defaultHttpMethod(){ rp.defaults = function (options, requester) { var def = function (method) { var d = function (uri, opts, callback) { var params = request.initParams(uri, opts, callback) Object.keys(options).forEach(function (key) { if (key !== 'headers' && params.options[key] === undefined) { params.options[key] = options[key] } }) if (options.headers) { var headers = {} util._extend(headers, options.headers) util._extend(headers, params.options.headers) params.options.headers = headers } if(typeof requester === 'function') { if(method === request) { method = requester } else { params.options._requester = requester } } return buildPromise(params.options, method); } return d } var de = def(request) de.get = def(request.get) de.patch = def(request.patch) de.post = def(request.post) de.put = def(request.put) de.head = def(request.head) de.del = def(request.del) de.cookie = def(request.cookie) de.jar = request.jar return de } function getParams(){ var args = Array.prototype.slice.call(arguments, 0); var args = Array.prototype.slice.call(arguments, 0); var params = request.initParams.apply(request, args); var params = request.initParams.apply(request, args); params.method = methodNameLookup[key]; params.method = methodNameLookup[key]; return buildPromise(params); return params; } function defaultHttpMethod(){ return buildPromise(getParams.apply(null, arguments)); } } module.exports = rp; module.exports = rp;