From 93851fb36d4961582557d4c39eb2f07e72f86a78 Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Tue, 17 Jul 2018 13:16:54 -0700 Subject: [PATCH 1/3] add ability to override request object --- index.js | 2 +- test/request.test.js | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/request.test.js diff --git a/index.js b/index.js index 1d09141..a152918 100644 --- a/index.js +++ b/index.js @@ -166,7 +166,7 @@ Request.prototype.abort = function () { function Factory(url, options, f) { var retryConfig = _.chain(_.isObject(url) ? url : options || {}).defaults(DEFAULTS).pick(Object.keys(DEFAULTS)).value(); - var req = new Request(url, options, f, retryConfig); + var req = new Factory.Request(url, options, f, retryConfig); req._tryUntilFail(); return req; } diff --git a/test/request.test.js b/test/request.test.js new file mode 100644 index 0000000..b2ef3bd --- /dev/null +++ b/test/request.test.js @@ -0,0 +1,20 @@ +'use strict'; + +var request = require('../'); +var t = require('chai').assert; + +describe('Request', function () { + it('should use overridden Request', function (done) { + var set = false; + request.Request = class extends request.Request { + constructor(url, options, f, retryConfig) { + super(url, options, f, retryConfig); + set = true; + } + }; + request('http://www.filltext.com/?rows=1', function (err, response, body) { + t.strictEqual(set, true); + done(); + }); + }); +}); From 3397bd68d95f0efd073f7517911fd01dc9f9238a Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Wed, 1 Aug 2018 06:11:07 -0700 Subject: [PATCH 2/3] add a readme section --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 5a79791..6f80e0b 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,20 @@ request({ }); ``` +## How to extend the default request + +```javascript +request.Request = class extends request.Request { + constructor(url, options, f, retryConfig) { + super(url, options, f, retryConfig); + // this constructor will be called for every requestretry call, + // and give you global logging + console.log('Request', url, options, f, retryConfig); + } +} +``` + + ## Modifying `request` options You can use the `defaults` method to provide default options like so: From 9e54d897498af4375d1bdd2508f35da716f6ddb4 Mon Sep 17 00:00:00 2001 From: Francois-Guillaume Ribreau Date: Wed, 1 Aug 2018 19:19:26 +0200 Subject: [PATCH 3/3] Update README.md --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6f80e0b..f7147e3 100644 --- a/README.md +++ b/README.md @@ -182,7 +182,16 @@ request({ }); ``` -## How to extend the default request +## How to access the underlying request library + +You can access to the underlying `request` library thanks to `request.Request`: + +```javascript +const request = require('requestretry'); +console.log(request.Request); // original request library +``` + +Thus, if needed, it's possible to monkey-patch or extend the underlying Request library: ```javascript request.Request = class extends request.Request {