Commit 5f039a51 authored by analog-nico's avatar analog-nico
Browse files

refactor: using request next

parent 584e53ec
Loading
Loading
Loading
Loading
+42 −61
Original line number Diff line number Diff line
@@ -11,26 +11,8 @@ var Bluebird = require('bluebird'),
    errors = require('./errors.js');


// Load Request freshly - so that users can require an unaltered request instance!
var request = (function () {

    function clearCache() {
        forEach(keys(require.cache), function (key) {
            delete require.cache[key];
        });
    }

    var temp = assign({}, require.cache);
    clearCache();

    var freshRequest = require('request');

    clearCache();
    assign(require.cache, temp);

    return freshRequest;

})();
var api = require('@request/api');
var client = require('@request/client');


var defaultTransformations = {
@@ -105,22 +87,32 @@ function RP$callback(err, response, body) {

}

var originalInit = request.Request.prototype.init;
function expose(request, _rp_promise, methodToExpose, exposeAs) {

request.Request.prototype.init = function RP$initInterceptor(options) {
    exposeAs = exposeAs || methodToExpose;

    var self = this;
    /* istanbul ignore if */
    if (!isUndefined(request[exposeAs])) {
        throw new Error('Unable to expose method "' + exposeAs + '". It is already implemented by Request. Please visit https://github.com/request/request-promise/wiki/Troubleshooting');
    }

    request[exposeAs] = function RP$exposed() {
        return _rp_promise[methodToExpose].apply(_rp_promise, arguments);
    };

    // Init may be called again - currently in case of redirects
    if (isPlainObject(options) && self._callback === undefined && self._rp_promise === undefined) {
}

function RP$init(options) {

    var self = {};

    self._rp_promise = new Bluebird(function (resolve, reject) {
        self._rp_resolve = resolve;
        self._rp_reject = reject;
    });

        self._rp_callbackOrig = self.callback;
        self.callback = RP$callback;
    self._rp_callbackOrig = options.callback;
    options.callback = self.callback = RP$callback.bind(self);

    if (isString(options.method)) {
        options.method = options.method.toUpperCase();
@@ -132,40 +124,29 @@ request.Request.prototype.init = function RP$initInterceptor(options) {
    self._rp_options.simple = options.simple === false ? false : true;
    self._rp_options.resolveWithFullResponse = options.resolveWithFullResponse === true ? true : false;

    }
    var request = client(options);

    return originalInit.apply(self, arguments);
    expose(request, self._rp_promise, 'then');
    expose(request, self._rp_promise, 'catch');
    expose(request, self._rp_promise, 'finally');

    request.promise = function RP$promise() {
        return self._rp_promise;
    };

function expose(methodToExpose, exposeAs) {

    exposeAs = exposeAs || methodToExpose;
    return request;

    /* istanbul ignore if */
    if (!isUndefined(request.Request.prototype[exposeAs])) {
        throw new Error('Unable to expose method "' + exposeAs + '". It is already implemented by Request. Please visit https://github.com/request/request-promise/wiki/Troubleshooting');
}

    request.Request.prototype[exposeAs] = function RP$exposed() {
        return this._rp_promise[methodToExpose].apply(this._rp_promise, arguments);
    };

module.exports = api({
    type: 'basic',
    define: {
        request: RP$init
    }
});

expose('then');
expose('catch');
expose('finally');

request.Request.prototype.promise = function RP$promise() {
    return this._rp_promise;
};


/* istanbul ignore next */ // Function covered but not seen by Istanbul.
request.bindCLS = function RP$bindCLS(ns) {
/* istanbul ignore next */ // Function covered but not seen by Instanbul.
module.exports.bindCLS = function RP$bindCLS(ns) {
    require('cls-bluebird')(ns);
};


module.exports = request;
+3 −2
Original line number Diff line number Diff line
@@ -29,9 +29,10 @@
    "test": "./node_modules/.bin/gulp ci"
  },
  "dependencies": {
    "@request/api": "^0.6.0",
    "@request/client": "^0.1.0",
    "bluebird": "^3.3",
    "lodash": "^4.6.1",
    "request": "^2.34"
    "lodash": "^4.6.1"
  },
  "devDependencies": {
    "body-parser": "1.15.x",
+1 −1
Original line number Diff line number Diff line
'use strict';

var rp = require('../../../lib/rp.js');
var request = require('request');
var request = require('./request.js');

var rpHasThen = rp('http://localhost:4000/200').then !== undefined;
var requestHasNoThen = request('http://localhost:4000/200').then === undefined;
+1 −1
Original line number Diff line number Diff line
'use strict';

var request = require('request');
var request = require('./request.js');
var rp = require('../../../lib/rp.js');

var requestHasNoThen = request('http://localhost:4000/200').then === undefined;
+2 −2
Original line number Diff line number Diff line
'use strict';

var request1 = require('request');
var request1 = require('./request.js');
var rp = require('../../../lib/rp.js');
var request2 = require('request');
var request2 = require('./request.js');

var request1HasNoThen = request1('http://localhost:4000/200').then === undefined;
var rpHasThen = rp('http://localhost:4000/200').then !== undefined;
Loading