postman-request
Advanced tools
Comparing version 2.80.1-postman.1 to 2.81.1-postman.1
27
index.js
@@ -17,11 +17,10 @@ // Copyright 2010-2012 Mikeal Rogers | ||
var extend = require('extend') | ||
, cookies = require('./lib/cookies') | ||
, helpers = require('./lib/helpers') | ||
var extend = require('extend') | ||
var cookies = require('./lib/cookies') | ||
var helpers = require('./lib/helpers') | ||
var paramsHaveRequestBody = helpers.paramsHaveRequestBody | ||
// organize params for patch, post, put, head, del | ||
function initParams(uri, options, callback) { | ||
function initParams (uri, options, callback) { | ||
if (typeof options === 'function') { | ||
@@ -70,2 +69,3 @@ callback = options | ||
request.head = verbFunc('head') | ||
request.options = verbFunc('options') | ||
request.post = verbFunc('post') | ||
@@ -86,3 +86,2 @@ request.put = verbFunc('put') | ||
function wrapRequestMethod (method, options, requester, verb) { | ||
return function (uri, opts, callback) { | ||
@@ -118,11 +117,11 @@ var params = initParams(uri, opts, callback) | ||
var defaults = wrapRequestMethod(self, options, requester) | ||
var defaults = wrapRequestMethod(self, options, requester) | ||
var verbs = ['get', 'head', 'post', 'put', 'patch', 'del', 'delete'] | ||
verbs.forEach(function(verb) { | ||
defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb) | ||
verbs.forEach(function (verb) { | ||
defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb) | ||
}) | ||
defaults.cookie = wrapRequestMethod(self.cookie, options, requester) | ||
defaults.jar = self.jar | ||
defaults.cookie = wrapRequestMethod(self.cookie, options, requester) | ||
defaults.jar = self.jar | ||
defaults.defaults = self.defaults | ||
@@ -153,9 +152,9 @@ return defaults | ||
Object.defineProperty(request, 'debug', { | ||
enumerable : true, | ||
get : function() { | ||
enumerable: true, | ||
get: function () { | ||
return request.Request.debug | ||
}, | ||
set : function(debug) { | ||
set: function (debug) { | ||
request.Request.debug = debug | ||
} | ||
}) |
'use strict' | ||
var caseless = require('caseless') | ||
, uuid = require('uuid') | ||
, helpers = require('./helpers') | ||
var uuid = require('uuid') | ||
var helpers = require('./helpers') | ||
var md5 = helpers.md5 | ||
, toBase64 = helpers.toBase64 | ||
var toBase64 = helpers.toBase64 | ||
function Auth (request) { | ||
@@ -129,3 +128,3 @@ // define all public properties here | ||
var self = this | ||
, request = self.request | ||
var request = self.request | ||
@@ -147,3 +146,3 @@ var authHeader | ||
var self = this | ||
, request = self.request | ||
var request = self.request | ||
@@ -150,0 +149,0 @@ if (!self.hasAuth || self.sentAuth) { return null } |
@@ -6,6 +6,5 @@ 'use strict' | ||
var Cookie = tough.Cookie | ||
, CookieJar = tough.CookieJar | ||
var CookieJar = tough.CookieJar | ||
exports.parse = function(str) { | ||
exports.parse = function (str) { | ||
if (str && str.uri) { | ||
@@ -21,15 +20,15 @@ str = str.uri | ||
// Adapt the sometimes-Async api of tough.CookieJar to our requirements | ||
function RequestJar(store) { | ||
function RequestJar (store) { | ||
var self = this | ||
self._jar = new CookieJar(store, {looseMode: true}) | ||
} | ||
RequestJar.prototype.setCookie = function(cookieOrStr, uri, options) { | ||
RequestJar.prototype.setCookie = function (cookieOrStr, uri, options) { | ||
var self = this | ||
return self._jar.setCookieSync(cookieOrStr, uri, options || {}) | ||
} | ||
RequestJar.prototype.getCookieString = function(uri) { | ||
RequestJar.prototype.getCookieString = function (uri) { | ||
var self = this | ||
return self._jar.getCookieStringSync(uri) | ||
} | ||
RequestJar.prototype.getCookies = function(uri) { | ||
RequestJar.prototype.getCookies = function (uri) { | ||
var self = this | ||
@@ -39,4 +38,4 @@ return self._jar.getCookiesSync(uri) | ||
exports.jar = function(store) { | ||
exports.jar = function (store) { | ||
return new RequestJar(store) | ||
} |
'use strict' | ||
function formatHostname(hostname) { | ||
function formatHostname (hostname) { | ||
// canonicalize the hostname, so that 'oogle.com' won't match 'google.com' | ||
@@ -8,9 +8,9 @@ return hostname.replace(/^\.*/, '.').toLowerCase() | ||
function parseNoProxyZone(zone) { | ||
function parseNoProxyZone (zone) { | ||
zone = zone.trim().toLowerCase() | ||
var zoneParts = zone.split(':', 2) | ||
, zoneHost = formatHostname(zoneParts[0]) | ||
, zonePort = zoneParts[1] | ||
, hasPort = zone.indexOf(':') > -1 | ||
var zoneHost = formatHostname(zoneParts[0]) | ||
var zonePort = zoneParts[1] | ||
var hasPort = zone.indexOf(':') > -1 | ||
@@ -20,14 +20,14 @@ return {hostname: zoneHost, port: zonePort, hasPort: hasPort} | ||
function uriInNoProxy(uri, noProxy) { | ||
function uriInNoProxy (uri, noProxy) { | ||
var port = uri.port || (uri.protocol === 'https:' ? '443' : '80') | ||
, hostname = formatHostname(uri.hostname) | ||
, noProxyList = noProxy.split(',') | ||
var hostname = formatHostname(uri.hostname) | ||
var noProxyList = noProxy.split(',') | ||
// iterate through the noProxyList until it finds a match. | ||
return noProxyList.map(parseNoProxyZone).some(function(noProxyZone) { | ||
return noProxyList.map(parseNoProxyZone).some(function (noProxyZone) { | ||
var isMatchedAt = hostname.indexOf(noProxyZone.hostname) | ||
, hostnameMatched = ( | ||
isMatchedAt > -1 && | ||
(isMatchedAt === hostname.length - noProxyZone.hostname.length) | ||
) | ||
var hostnameMatched = ( | ||
isMatchedAt > -1 && | ||
(isMatchedAt === hostname.length - noProxyZone.hostname.length) | ||
) | ||
@@ -42,3 +42,3 @@ if (noProxyZone.hasPort) { | ||
function getProxyFromURI(uri) { | ||
function getProxyFromURI (uri) { | ||
// Decide the proper request proxy to use based on the request URI object and the | ||
@@ -66,3 +66,3 @@ // environmental variables (NO_PROXY, HTTP_PROXY, etc.) | ||
return process.env.HTTP_PROXY || | ||
process.env.http_proxy || null | ||
process.env.http_proxy || null | ||
} | ||
@@ -72,5 +72,5 @@ | ||
return process.env.HTTPS_PROXY || | ||
process.env.https_proxy || | ||
process.env.HTTP_PROXY || | ||
process.env.http_proxy || null | ||
process.env.https_proxy || | ||
process.env.HTTP_PROXY || | ||
process.env.http_proxy || null | ||
} | ||
@@ -77,0 +77,0 @@ |
@@ -74,10 +74,6 @@ 'use strict' | ||
'multipart/alternative'])) { | ||
// reset values | ||
data.postData.mimeType = 'multipart/form-data' | ||
} | ||
else if (some([ | ||
} else if (some([ | ||
'application/x-www-form-urlencoded'])) { | ||
if (!data.postData.params) { | ||
@@ -91,5 +87,3 @@ data.postData.text = '' | ||
} | ||
} | ||
else if (some([ | ||
} else if (some([ | ||
'text/json', | ||
@@ -99,3 +93,2 @@ 'text/x-json', | ||
'application/x-json'])) { | ||
data.postData.mimeType = 'application/json' | ||
@@ -174,4 +167,3 @@ | ||
options.form = req.postData.paramsObj | ||
} | ||
else if (test('application/json')) { | ||
} else if (test('application/json')) { | ||
if (req.postData.jsonObj) { | ||
@@ -181,4 +173,3 @@ options.body = req.postData.jsonObj | ||
} | ||
} | ||
else if (test('multipart/form-data')) { | ||
} else if (test('multipart/form-data')) { | ||
options.formData = {} | ||
@@ -210,4 +201,3 @@ | ||
}) | ||
} | ||
else { | ||
} else { | ||
if (req.postData.text) { | ||
@@ -214,0 +204,0 @@ options.body = req.postData.text |
'use strict' | ||
var jsonSafeStringify = require('json-stringify-safe') | ||
, crypto = require('crypto') | ||
, Buffer = require('safe-buffer').Buffer | ||
var crypto = require('crypto') | ||
var Buffer = require('safe-buffer').Buffer | ||
@@ -11,3 +11,3 @@ var defer = typeof setImmediate === 'undefined' | ||
function paramsHaveRequestBody(params) { | ||
function paramsHaveRequestBody (params) { | ||
return ( | ||
@@ -61,8 +61,8 @@ params.body || | ||
exports.paramsHaveRequestBody = paramsHaveRequestBody | ||
exports.safeStringify = safeStringify | ||
exports.md5 = md5 | ||
exports.isReadStream = isReadStream | ||
exports.toBase64 = toBase64 | ||
exports.copy = copy | ||
exports.version = version | ||
exports.defer = defer | ||
exports.safeStringify = safeStringify | ||
exports.md5 = md5 | ||
exports.isReadStream = isReadStream | ||
exports.toBase64 = toBase64 | ||
exports.copy = copy | ||
exports.version = version | ||
exports.defer = defer |
'use strict' | ||
var zlib = require('zlib') | ||
, stream = require('stream') | ||
, inherit = require('util').inherits | ||
, Inflate | ||
var stream = require('stream') | ||
var inherit = require('util').inherits | ||
var Inflate | ||
@@ -8,0 +8,0 @@ Inflate = function (options) { |
'use strict' | ||
var uuid = require('uuid') | ||
, CombinedStream = require('combined-stream') | ||
, isstream = require('isstream') | ||
, Buffer = require('safe-buffer').Buffer | ||
var CombinedStream = require('combined-stream') | ||
var isstream = require('isstream') | ||
var Buffer = require('safe-buffer').Buffer | ||
function Multipart (request) { | ||
@@ -18,4 +17,4 @@ this.request = request | ||
var self = this | ||
, chunked = false | ||
, parts = options.data || options | ||
var chunked = false | ||
var parts = options.data || options | ||
@@ -107,3 +106,3 @@ if (!parts.forEach) { | ||
var chunked = self.isChunked(options) | ||
, parts = options.data || options | ||
var parts = options.data || options | ||
@@ -110,0 +109,0 @@ self.setHeaders(chunked) |
'use strict' | ||
var url = require('url') | ||
, qs = require('qs') | ||
, caseless = require('caseless') | ||
, uuid = require('uuid') | ||
, oauth = require('oauth-sign') | ||
, crypto = require('crypto') | ||
, Buffer = require('safe-buffer').Buffer | ||
var qs = require('qs') | ||
var caseless = require('caseless') | ||
var uuid = require('uuid') | ||
var oauth = require('oauth-sign') | ||
var crypto = require('crypto') | ||
var Buffer = require('safe-buffer').Buffer | ||
function OAuth (request) { | ||
@@ -26,3 +25,3 @@ this.request = request | ||
if (!oa.oauth_timestamp) { | ||
oa.oauth_timestamp = Math.floor( Date.now() / 1000 ).toString() | ||
oa.oauth_timestamp = Math.floor(Date.now() / 1000).toString() | ||
} | ||
@@ -36,7 +35,7 @@ if (!oa.oauth_nonce) { | ||
var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key | ||
var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key // eslint-disable-line camelcase | ||
delete oa.oauth_consumer_secret | ||
delete oa.oauth_private_key | ||
var token_secret = oa.oauth_token_secret | ||
var token_secret = oa.oauth_token_secret // eslint-disable-line camelcase | ||
delete oa.oauth_token_secret | ||
@@ -56,4 +55,5 @@ | ||
params, | ||
consumer_secret_or_private_key, | ||
token_secret) | ||
consumer_secret_or_private_key, // eslint-disable-line camelcase | ||
token_secret // eslint-disable-line camelcase | ||
) | ||
@@ -67,3 +67,3 @@ if (realm) { | ||
OAuth.prototype.buildBodyHash = function(_oauth, body) { | ||
OAuth.prototype.buildBodyHash = function (_oauth, body) { | ||
if (['HMAC-SHA1', 'RSA-SHA1'].indexOf(_oauth.signature_method || 'HMAC-SHA1') < 0) { | ||
@@ -103,12 +103,12 @@ this.request.emit('error', new Error('oauth: ' + _oauth.signature_method + | ||
var uri = self.request.uri || {} | ||
, method = self.request.method || '' | ||
, headers = caseless(self.request.headers) | ||
, body = self.request.body || '' | ||
, qsLib = self.request.qsLib || qs | ||
var method = self.request.method || '' | ||
var headers = caseless(self.request.headers) | ||
var body = self.request.body || '' | ||
var qsLib = self.request.qsLib || qs | ||
var form | ||
, query | ||
, contentType = headers.get('content-type') || '' | ||
, formContentType = 'application/x-www-form-urlencoded' | ||
, transport = _oauth.transport_method || 'header' | ||
var query | ||
var contentType = headers.get('content-type') || '' | ||
var formContentType = 'application/x-www-form-urlencoded' | ||
var transport = _oauth.transport_method || 'header' | ||
@@ -115,0 +115,0 @@ if (contentType.slice(0, formContentType.length) === formContentType) { |
'use strict' | ||
var qs = require('qs') | ||
, querystring = require('querystring') | ||
var querystring = require('querystring') | ||
function Querystring (request) { | ||
@@ -16,3 +15,3 @@ this.request = request | ||
Querystring.prototype.init = function (options) { | ||
if (this.lib) {return} | ||
if (this.lib) { return } | ||
@@ -19,0 +18,0 @@ this.useQuerystring = options.useQuerystring |
@@ -12,3 +12,3 @@ 'use strict' | ||
this.followOriginalHttpMethod = false | ||
this.allowRedirect = function () {return true} | ||
this.allowRedirect = function () { return true } | ||
this.maxRedirects = 10 | ||
@@ -48,3 +48,3 @@ this.redirects = [] | ||
var self = this | ||
, request = self.request | ||
var request = self.request | ||
@@ -83,3 +83,3 @@ var redirectTo = null | ||
var self = this | ||
, request = self.request | ||
var request = self.request | ||
@@ -118,9 +118,13 @@ var redirectTo = self.redirectTo(response) | ||
self.redirects.push( | ||
{ statusCode : response.statusCode | ||
, redirectUri: redirectTo | ||
} | ||
) | ||
if (self.followAllRedirects && request.method !== 'HEAD' | ||
&& response.statusCode !== 401 && response.statusCode !== 307) { | ||
// remove the host header if the response is a 307 & the host has changed. | ||
// (the new host will be populated auto-magically). | ||
// For other types of redirects, it's removed automatically (see code below) | ||
if (self.followAllRedirects && response.statusCode === 307 && request.headers && uriPrev.host !== request.uri.host) { | ||
request.removeHeader('host') | ||
} | ||
self.redirects.push({ statusCode: response.statusCode, redirectUri: redirectTo }) | ||
if (self.followAllRedirects && request.method !== 'HEAD' && | ||
response.statusCode !== 401 && response.statusCode !== 307) { | ||
request.method = self.followOriginalHttpMethod ? request.method : 'GET' | ||
@@ -127,0 +131,0 @@ } |
'use strict' | ||
var url = require('url') | ||
, tunnel = require('tunnel-agent') | ||
var tunnel = require('tunnel-agent') | ||
@@ -34,6 +34,6 @@ var defaultProxyHeaderWhiteList = [ | ||
function constructProxyHost(uriObject) { | ||
function constructProxyHost (uriObject) { | ||
var port = uriObject.port | ||
, protocol = uriObject.protocol | ||
, proxyHost = uriObject.hostname + ':' | ||
var protocol = uriObject.protocol | ||
var proxyHost = uriObject.hostname + ':' | ||
@@ -51,3 +51,3 @@ if (port) { | ||
function constructProxyHeaderWhiteList(headers, proxyHeaderWhiteList) { | ||
function constructProxyHeaderWhiteList (headers, proxyHeaderWhiteList) { | ||
var whiteList = proxyHeaderWhiteList | ||
@@ -73,18 +73,18 @@ .reduce(function (set, header) { | ||
var tunnelOptions = { | ||
proxy : { | ||
host : proxy.hostname, | ||
port : +proxy.port, | ||
proxyAuth : proxy.auth, | ||
headers : proxyHeaders | ||
proxy: { | ||
host: proxy.hostname, | ||
port: +proxy.port, | ||
proxyAuth: proxy.auth, | ||
headers: proxyHeaders | ||
}, | ||
headers : request.headers, | ||
ca : request.ca, | ||
cert : request.cert, | ||
key : request.key, | ||
passphrase : request.passphrase, | ||
pfx : request.pfx, | ||
ciphers : request.ciphers, | ||
rejectUnauthorized : request.rejectUnauthorized, | ||
secureOptions : request.secureOptions, | ||
secureProtocol : request.secureProtocol | ||
headers: request.headers, | ||
ca: request.ca, | ||
cert: request.cert, | ||
key: request.key, | ||
passphrase: request.passphrase, | ||
pfx: request.pfx, | ||
ciphers: request.ciphers, | ||
rejectUnauthorized: request.rejectUnauthorized, | ||
secureOptions: request.secureOptions, | ||
secureProtocol: request.secureProtocol | ||
} | ||
@@ -95,3 +95,3 @@ | ||
function constructTunnelFnName(uri, proxy) { | ||
function constructTunnelFnName (uri, proxy) { | ||
var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http') | ||
@@ -102,3 +102,3 @@ var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http') | ||
function getTunnelFn(request) { | ||
function getTunnelFn (request) { | ||
var uri = request.uri | ||
@@ -110,3 +110,2 @@ var proxy = request.proxy | ||
function Tunnel (request) { | ||
@@ -123,4 +122,4 @@ this.request = request | ||
var self = this | ||
, request = self.request | ||
// Tunnel HTTPS by default. Allow the user to override this setting. | ||
var request = self.request | ||
// Tunnel HTTPS by default. Allow the user to override this setting. | ||
@@ -143,3 +142,3 @@ // If self.tunnelOverride is set (the user specified a value), use it. | ||
var self = this | ||
, request = self.request | ||
var request = self.request | ||
@@ -146,0 +145,0 @@ options = options || {} |
var url = require('url') | ||
, urlEncoder = require('postman-url-encoder') | ||
, EMPTY = '' | ||
, STRING = 'string' | ||
, AMPERSAND = '&' | ||
, EQUALS = '=' | ||
, QUESTION_MARK = '?' | ||
, stringify | ||
, parse | ||
var urlEncoder = require('postman-url-encoder') | ||
var EMPTY = '' | ||
var STRING = 'string' | ||
var AMPERSAND = '&' | ||
var EQUALS = '=' | ||
var QUESTION_MARK = '?' | ||
var stringify | ||
var parse | ||
@@ -19,3 +19,3 @@ /** | ||
var parts | ||
if (typeof string === STRING) { | ||
if (typeof string === STRING) { // eslint-disable-line valid-typeof | ||
parts = string.split(AMPERSAND) | ||
@@ -27,4 +27,4 @@ return parts.map(function (param, idx) { | ||
var index = (typeof param === STRING) ? param.indexOf(EQUALS) : -1, | ||
paramObj = {} | ||
var index = (typeof param === STRING) ? param.indexOf(EQUALS) : -1 // eslint-disable-line valid-typeof | ||
var paramObj = {} | ||
@@ -36,4 +36,3 @@ // this means that there was no value for this key (not even blank, so we store this info) and the value is set | ||
paramObj.value = null | ||
} | ||
else { | ||
} else { | ||
paramObj.key = param.substr(0, index) | ||
@@ -57,4 +56,4 @@ paramObj.value = param.substr(index + 1) | ||
return parameters ? parameters.map(function (param) { | ||
var key = param.key | ||
, value = param.value | ||
var key = param.key | ||
var value = param.value | ||
@@ -83,7 +82,7 @@ if (value === undefined) { | ||
module.exports = function (str) { | ||
var parsed = url.parse(str), | ||
rawQs, | ||
search, | ||
path, | ||
qs | ||
var parsed = url.parse(str) | ||
var rawQs | ||
var search | ||
var path | ||
var qs | ||
@@ -90,0 +89,0 @@ rawQs = parsed.query |
@@ -10,6 +10,6 @@ { | ||
], | ||
"version": "2.80.1-postman.1", | ||
"version": "2.81.1-postman.1", | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/postmanlabs/postman-request.git" | ||
"url": "https://github.com/request/request.git" | ||
}, | ||
@@ -27,3 +27,3 @@ "license": "Apache-2.0", | ||
"dependencies": { | ||
"aws-sign2": "~0.6.0", | ||
"aws-sign2": "~0.7.0", | ||
"aws4": "^1.2.1", | ||
@@ -35,3 +35,3 @@ "caseless": "~0.12.0", | ||
"form-data": "~2.1.1", | ||
"har-validator": "~4.2.1", | ||
"har-validator": "~5.0.2", | ||
"hawk": "~3.1.3", | ||
@@ -44,5 +44,5 @@ "http-signature": "~1.1.0", | ||
"oauth-sign": "~0.8.1", | ||
"postman-url-encoder": "^1.0.0", | ||
"performance-now": "^0.2.0", | ||
"qs": "~6.3.0", | ||
"postman-url-encoder": "1.0.1", | ||
"qs": "~6.4.0", | ||
"safe-buffer": "^5.0.1", | ||
@@ -59,3 +59,3 @@ "stringstream": "~0.0.4", | ||
"test-browser": "node tests/browser/start.js", | ||
"lint": "eslint lib/ *.js tests/ && echo Lint passed." | ||
"lint": "standard" | ||
}, | ||
@@ -67,5 +67,4 @@ "devDependencies": { | ||
"buffer-equal": "^1.0.0", | ||
"codecov": "^1.0.1", | ||
"codecov": "^2.0.2", | ||
"coveralls": "^2.11.4", | ||
"eslint": "^2.5.3", | ||
"function-bind": "^1.0.2", | ||
@@ -82,2 +81,3 @@ "istanbul": "^0.4.0", | ||
"server-destroy": "^1.0.1", | ||
"standard": "^9.0.0", | ||
"tape": "^4.6.0", | ||
@@ -88,3 +88,2 @@ "taper": "^0.5.0" | ||
"ignore": [ | ||
"eslint", | ||
"hawk", | ||
@@ -91,0 +90,0 @@ "har-validator" |
# Request - Simplified HTTP client | ||
This is a fork of the excellent `request` module, which is used inside Postman Runtime. | ||
This is a fork of the excellent `request` module, which is used inside Postman Runtime. It contains a few bugfixes that are not fixed in `request`: | ||
- Handling of old-style deflate responses: https://github.com/request/request/issues/2197 | ||
- Correct encoding of URL Parameters: https://github.com/nodejs/node/issues/8321 | ||
- Redirect behavior for 307 responses when Host header is set: https://github.com/request/request/issues/2666 | ||
## Super simple to use | ||
@@ -23,2 +27,3 @@ | ||
- [Streaming](#streaming) | ||
- [Promises & Async/Await](#promises--asyncawait) | ||
- [Forms](#forms) | ||
@@ -138,2 +143,18 @@ - [HTTP Authentication](#http-authentication) | ||
## Promises & Async/Await | ||
`request` supports both streaming and callback interfaces natively. If you'd like `request` to return a Promise instead, you can use an alternative interface wrapper for `request`. These wrappers can be useful if you prefer to work with Promises, or if you'd like to use `async`/`await` in ES2017. | ||
Several alternative interfaces are provided by the request team, including: | ||
- [`request-promise`](https://github.com/request/request-promise) (uses [Bluebird](https://github.com/petkaantonov/bluebird) Promises) | ||
- [`request-promise-native`](https://github.com/request/request-promise-native) (uses native Promises) | ||
- [`request-promise-any`](https://github.com/request/request-promise-any) (uses [any-promise](https://www.npmjs.com/package/any-promise) Promises) | ||
[back to top](#table-of-contents) | ||
--- | ||
## Forms | ||
@@ -871,52 +892,16 @@ | ||
### request.put | ||
### request.METHOD() | ||
Same as `request()`, but defaults to `method: "PUT"`. | ||
These HTTP method convenience functions act just like `request()` but with a default method already set for you: | ||
```js | ||
request.put(url) | ||
``` | ||
- *request.get()*: Defaults to `method: "GET"`. | ||
- *request.post()*: Defaults to `method: "POST"`. | ||
- *request.put()*: Defaults to `method: "PUT"`. | ||
- *request.patch()*: Defaults to `method: "PATCH"`. | ||
- *request.del() / request.delete()*: Defaults to `method: "DELETE"`. | ||
- *request.head()*: Defaults to `method: "HEAD"`. | ||
- *request.options()*: Defaults to `method: "OPTIONS"`. | ||
### request.patch | ||
### request.cookie() | ||
Same as `request()`, but defaults to `method: "PATCH"`. | ||
```js | ||
request.patch(url) | ||
``` | ||
### request.post | ||
Same as `request()`, but defaults to `method: "POST"`. | ||
```js | ||
request.post(url) | ||
``` | ||
### request.head | ||
Same as `request()`, but defaults to `method: "HEAD"`. | ||
```js | ||
request.head(url) | ||
``` | ||
### request.del / request.delete | ||
Same as `request()`, but defaults to `method: "DELETE"`. | ||
```js | ||
request.del(url) | ||
request.delete(url) | ||
``` | ||
### request.get | ||
Same as `request()` (for uniformity). | ||
```js | ||
request.get(url) | ||
``` | ||
### request.cookie | ||
Function that creates a new cookie. | ||
@@ -1034,3 +1019,4 @@ | ||
} | ||
).on('data', function(data) { | ||
) | ||
.on('data', function(data) { | ||
// decompressed data as it is received | ||
@@ -1037,0 +1023,0 @@ console.log('decoded chunk: ' + data) |
225
request.js
'use strict' | ||
var http = require('http') | ||
, https = require('https') | ||
, url = require('url') | ||
, util = require('util') | ||
, stream = require('stream') | ||
, zlib = require('zlib') | ||
, hawk = require('hawk') | ||
, aws2 = require('aws-sign2') | ||
, aws4 = require('aws4') | ||
, httpSignature = require('http-signature') | ||
, mime = require('mime-types') | ||
, stringstream = require('stringstream') | ||
, caseless = require('caseless') | ||
, ForeverAgent = require('forever-agent') | ||
, FormData = require('form-data') | ||
, extend = require('extend') | ||
, isstream = require('isstream') | ||
, isTypedArray = require('is-typedarray').strict | ||
, helpers = require('./lib/helpers') | ||
, cookies = require('./lib/cookies') | ||
, inflate = require('./lib/inflate') | ||
, urlParse = require('./lib/url-parse') | ||
, getProxyFromURI = require('./lib/getProxyFromURI') | ||
, Querystring = require('./lib/querystring').Querystring | ||
, Har = require('./lib/har').Har | ||
, Auth = require('./lib/auth').Auth | ||
, OAuth = require('./lib/oauth').OAuth | ||
, Multipart = require('./lib/multipart').Multipart | ||
, Redirect = require('./lib/redirect').Redirect | ||
, Tunnel = require('./lib/tunnel').Tunnel | ||
, now = require('performance-now') | ||
, Buffer = require('safe-buffer').Buffer | ||
var https = require('https') | ||
var url = require('url') | ||
var util = require('util') | ||
var stream = require('stream') | ||
var zlib = require('zlib') | ||
var hawk = require('hawk') | ||
var aws2 = require('aws-sign2') | ||
var aws4 = require('aws4') | ||
var httpSignature = require('http-signature') | ||
var mime = require('mime-types') | ||
var stringstream = require('stringstream') | ||
var caseless = require('caseless') | ||
var ForeverAgent = require('forever-agent') | ||
var FormData = require('form-data') | ||
var extend = require('extend') | ||
var isstream = require('isstream') | ||
var isTypedArray = require('is-typedarray').strict | ||
var helpers = require('./lib/helpers') | ||
var cookies = require('./lib/cookies') | ||
var getProxyFromURI = require('./lib/getProxyFromURI') | ||
var Querystring = require('./lib/querystring').Querystring | ||
var Har = require('./lib/har').Har | ||
var Auth = require('./lib/auth').Auth | ||
var OAuth = require('./lib/oauth').OAuth | ||
var Multipart = require('./lib/multipart').Multipart | ||
var Redirect = require('./lib/redirect').Redirect | ||
var Tunnel = require('./lib/tunnel').Tunnel | ||
var now = require('performance-now') | ||
var Buffer = require('safe-buffer').Buffer | ||
var inflate = require('./lib/inflate') | ||
var urlParse = require('./lib/url-parse') | ||
var safeStringify = helpers.safeStringify | ||
, isReadStream = helpers.isReadStream | ||
, toBase64 = helpers.toBase64 | ||
, defer = helpers.defer | ||
, copy = helpers.copy | ||
, version = helpers.version | ||
, globalCookieJar = cookies.jar() | ||
var isReadStream = helpers.isReadStream | ||
var toBase64 = helpers.toBase64 | ||
var defer = helpers.defer | ||
var copy = helpers.copy | ||
var version = helpers.version | ||
var globalCookieJar = cookies.jar() | ||
var globalPool = {} | ||
function filterForNonReserved(reserved, options) { | ||
function filterForNonReserved (reserved, options) { | ||
// Filter out properties that are not reserved. | ||
@@ -61,3 +59,3 @@ // Reserved values are passed in at call site. | ||
function filterOutReservedFunctions(reserved, options) { | ||
function filterOutReservedFunctions (reserved, options) { | ||
// Filter out properties that are functions and are reserved. | ||
@@ -75,7 +73,6 @@ // Reserved values are passed in at call site. | ||
return object | ||
} | ||
// Return a simpler request object to allow serialization | ||
function requestToJSON() { | ||
function requestToJSON () { | ||
var self = this | ||
@@ -90,3 +87,3 @@ return { | ||
// Return a simpler response object to allow serialization | ||
function responseToJSON() { | ||
function responseToJSON () { | ||
var self = this | ||
@@ -142,3 +139,3 @@ return { | ||
Request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG) | ||
function debug() { | ||
function debug () { | ||
if (Request.debug) { | ||
@@ -267,3 +264,3 @@ console.error('REQUEST %s', util.format.apply(util, arguments)) | ||
if (!self.uri.pathname) {self.uri.pathname = '/'} | ||
if (!self.uri.pathname) { self.uri.pathname = '/' } | ||
@@ -310,4 +307,3 @@ if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) { | ||
if (!self.uri.port) { | ||
if (self.uri.protocol === 'http:') {self.uri.port = 80} | ||
else if (self.uri.protocol === 'https:') {self.uri.port = 443} | ||
if (self.uri.protocol === 'http:') { self.uri.port = 80 } else if (self.uri.protocol === 'https:') { self.uri.port = 443 } | ||
} | ||
@@ -399,3 +395,3 @@ | ||
if (self.uri.auth && !self.hasHeader('authorization')) { | ||
var uriAuthPieces = self.uri.auth.split(':').map(function(item) {return self._qs.unescape(item)}) | ||
var uriAuthPieces = self.uri.auth.split(':').map(function (item) { return self._qs.unescape(item) }) | ||
self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true) | ||
@@ -405,3 +401,3 @@ } | ||
if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) { | ||
var proxyAuthPieces = self.proxy.auth.split(':').map(function(item) {return self._qs.unescape(item)}) | ||
var proxyAuthPieces = self.proxy.auth.split(':').map(function (item) { return self._qs.unescape(item) }) | ||
var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':')) | ||
@@ -438,7 +434,5 @@ self.setHeader('proxy-authorization', authHeader) | ||
length = Buffer.byteLength(self.body) | ||
} | ||
else if (Array.isArray(self.body)) { | ||
length = self.body.reduce(function (a, b) {return a + b.length}, 0) | ||
} | ||
else { | ||
} else if (Array.isArray(self.body)) { | ||
length = self.body.reduce(function (a, b) { return a + b.length }, 0) | ||
} else { | ||
length = self.body.length | ||
@@ -465,4 +459,4 @@ } | ||
var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol | ||
, defaultModules = {'http:':http, 'https:':https} | ||
, httpModules = self.httpModules || {} | ||
var defaultModules = {'http:': http, 'https:': https} | ||
var httpModules = self.httpModules || {} | ||
@@ -532,5 +526,5 @@ self.httpModule = httpModules[protocol] || defaultModules[protocol] | ||
// self.on('pipe', function () { | ||
// console.error('You have already piped to this stream. Pipeing twice is likely to break the request.') | ||
// }) | ||
// self.on('pipe', function () { | ||
// console.error('You have already piped to this stream. Pipeing twice is likely to break the request.') | ||
// }) | ||
}) | ||
@@ -547,4 +541,3 @@ | ||
self._form.pipe(self) | ||
} | ||
else if (self._auth.hasAuth && self._auth.sentAuth) { | ||
} else if (self._auth.hasAuth && self._auth.sentAuth) { | ||
self._form.pipe(self) | ||
@@ -600,3 +593,2 @@ } | ||
}) | ||
} | ||
@@ -764,4 +756,5 @@ | ||
if (!self.proxy && !(self.uri.isUnix)) { | ||
try { extend(reqOptions, urlParse(self.uri.href)) } | ||
catch (e) { } // nothing to do if urlParse fails, "extend" never throws an error. | ||
try { | ||
extend(reqOptions, urlParse(self.uri.href)) | ||
} catch (e) { } // nothing to do if urlParse fails, "extend" never throws an error. | ||
} | ||
@@ -803,6 +796,7 @@ | ||
self.req.on('error', self.onRequestError.bind(self)) | ||
self.req.on('drain', function() { | ||
self.req.on('drain', function () { | ||
self.emit('drain') | ||
}) | ||
self.req.on('socket', function(socket) { | ||
self.req.on('socket', function (socket) { | ||
// `._connecting` was the old property which was made public in node v6.1.0 | ||
@@ -814,7 +808,7 @@ var isConnecting = socket._connecting || socket.connecting | ||
if (isConnecting) { | ||
var onLookupTiming = function() { | ||
var onLookupTiming = function () { | ||
self.timings.lookup = now() - self.startTimeNow | ||
} | ||
var onConnectTiming = function() { | ||
var onConnectTiming = function () { | ||
self.timings.connect = now() - self.startTimeNow | ||
@@ -827,3 +821,3 @@ } | ||
// clean up timing event listeners if needed on error | ||
self.req.once('error', function() { | ||
self.req.once('error', function () { | ||
socket.removeListener('lookup', onLookupTiming) | ||
@@ -835,3 +829,3 @@ socket.removeListener('connect', onConnectTiming) | ||
var setReqTimeout = function() { | ||
var setReqTimeout = function () { | ||
// This timeout sets the amount of time to wait *between* bytes sent | ||
@@ -858,3 +852,3 @@ // from the server once connected. | ||
if (isConnecting) { | ||
var onReqSockConnect = function() { | ||
var onReqSockConnect = function () { | ||
socket.removeListener('connect', onReqSockConnect) | ||
@@ -868,3 +862,3 @@ clearTimeout(self.timeoutTimer) | ||
self.req.on('error', function(err) { | ||
self.req.on('error', function (err) { // eslint-disable-line handle-callback-err | ||
socket.removeListener('connect', onReqSockConnect) | ||
@@ -901,4 +895,4 @@ }) | ||
} | ||
if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' | ||
&& self.agent.addRequestNoreuse) { | ||
if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' && | ||
self.agent.addRequestNoreuse) { | ||
self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) } | ||
@@ -924,3 +918,3 @@ self.start() | ||
debug('onRequestResponse', self.uri.href, response.statusCode, response.headers) | ||
response.on('end', function() { | ||
response.on('end', function () { | ||
if (self.timing) { | ||
@@ -981,4 +975,4 @@ self.timings.end = now() - self.startTimeNow | ||
if (self.httpModule === https && | ||
self.strictSSL && (!response.hasOwnProperty('socket') || | ||
!response.socket.authorized)) { | ||
self.strictSSL && (!response.hasOwnProperty('socket') || | ||
!response.socket.authorized)) { | ||
debug('strict ssl error', self.uri.href) | ||
@@ -1008,3 +1002,3 @@ var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL' | ||
var addCookie = function (cookie) { | ||
//set the cookie if it's domain in the href's domain. | ||
// set the cookie if it's domain in the href's domain. | ||
try { | ||
@@ -1045,9 +1039,9 @@ targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true}) | ||
return ( | ||
self.method === 'HEAD' | ||
self.method === 'HEAD' || | ||
// Informational | ||
|| (code >= 100 && code < 200) | ||
(code >= 100 && code < 200) || | ||
// No Content | ||
|| code === 204 | ||
code === 204 || | ||
// Not Modified | ||
|| code === 304 | ||
code === 304 | ||
) | ||
@@ -1066,4 +1060,4 @@ } | ||
var zlibOptions = { | ||
flush: zlib.Z_SYNC_FLUSH | ||
, finishFlush: zlib.Z_SYNC_FLUSH | ||
flush: zlib.Z_SYNC_FLUSH, | ||
finishFlush: zlib.Z_SYNC_FLUSH | ||
} | ||
@@ -1130,9 +1124,7 @@ | ||
}) | ||
responseContent.on('close', function () {self.emit('close')}) | ||
responseContent.on('close', function () { self.emit('close') }) | ||
if (self.callback) { | ||
self.readResponseBody(response) | ||
} | ||
//if no callback | ||
else { | ||
} else { // if no callback | ||
self.on('end', function () { | ||
@@ -1152,6 +1144,6 @@ if (self._aborted) { | ||
var self = this | ||
debug('reading response\'s body') | ||
debug("reading response's body") | ||
var buffers = [] | ||
, bufferLength = 0 | ||
, strings = [] | ||
var bufferLength = 0 | ||
var strings = [] | ||
@@ -1217,4 +1209,3 @@ self.on('data', function (chunk) { | ||
self.req.abort() | ||
} | ||
else if (self.response) { | ||
} else if (self.response) { | ||
self.response.destroy() | ||
@@ -1235,4 +1226,3 @@ } | ||
dest.setHeader(ctname, response.headers[ctname]) | ||
} | ||
else { | ||
} else { | ||
dest.headers[ctname] = response.headers[ctname] | ||
@@ -1308,3 +1298,3 @@ } | ||
self._form = new FormData() | ||
self._form.on('error', function(err) { | ||
self._form.on('error', function (err) { | ||
err.message = 'form-data: ' + err.message | ||
@@ -1384,4 +1374,4 @@ self.emit('error', err) | ||
var unixParts = this.uri.path.split(':') | ||
, host = unixParts[0] | ||
, path = unixParts[1] | ||
var host = unixParts[0] | ||
var path = unixParts[1] | ||
// Apply unix properties to request | ||
@@ -1396,3 +1386,2 @@ this.socketPath = host | ||
Request.prototype.auth = function (user, pass, sendImmediately, bearer) { | ||
@@ -1413,3 +1402,3 @@ var self = this | ||
if (opts.sign_version == 4 || opts.sign_version == '4') { | ||
if (opts.sign_version === 4 || opts.sign_version === '4') { | ||
// use aws4 | ||
@@ -1435,16 +1424,15 @@ var options = { | ||
} | ||
} | ||
else { | ||
} else { | ||
// default: use aws-sign2 | ||
var date = new Date() | ||
self.setHeader('date', date.toUTCString()) | ||
var auth = | ||
{ key: opts.key | ||
, secret: opts.secret | ||
, verb: self.method.toUpperCase() | ||
, date: date | ||
, contentType: self.getHeader('content-type') || '' | ||
, md5: self.getHeader('content-md5') || '' | ||
, amazonHeaders: aws2.canonicalizeHeaders(self.headers) | ||
} | ||
var auth = { | ||
key: opts.key, | ||
secret: opts.secret, | ||
verb: self.method.toUpperCase(), | ||
date: date, | ||
contentType: self.getHeader('content-type') || '', | ||
md5: self.getHeader('content-md5') || '', | ||
amazonHeaders: aws2.canonicalizeHeaders(self.headers) | ||
} | ||
var path = self.uri.path | ||
@@ -1469,6 +1457,6 @@ if (opts.bucket && path) { | ||
httpSignature.signRequest({ | ||
getHeader: function(header) { | ||
getHeader: function (header) { | ||
return self.getHeader(header, self.headers) | ||
}, | ||
setHeader: function(header, value) { | ||
setHeader: function (header, value) { | ||
self.setHeader(header, value) | ||
@@ -1510,3 +1498,3 @@ }, | ||
var urihref = self.uri.href | ||
//fetch cookie in the Specified host | ||
// fetch cookie in the Specified host | ||
if (targetCookieJar) { | ||
@@ -1517,3 +1505,3 @@ cookies = targetCookieJar.getCookieString(urihref) | ||
//if need cookie and cookie is not empty | ||
// if need cookie and cookie is not empty | ||
if (cookies && cookies.length) { | ||
@@ -1531,3 +1519,2 @@ if (self.originalCookieHeader) { | ||
// Stream API | ||
@@ -1555,3 +1542,3 @@ Request.prototype.pipe = function (dest, opts) { | ||
var self = this | ||
if (self._aborted) {return} | ||
if (self._aborted) { return } | ||
@@ -1567,3 +1554,3 @@ if (!self._started) { | ||
var self = this | ||
if (self._aborted) {return} | ||
if (self._aborted) { return } | ||
@@ -1570,0 +1557,0 @@ if (chunk) { |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
205744
2626
1094
+ Addedajv@5.5.2(transitive)
+ Addedaws-sign2@0.7.0(transitive)
+ Addedfast-deep-equal@1.1.0(transitive)
+ Addedfast-json-stable-stringify@2.1.0(transitive)
+ Addedhar-schema@2.0.0(transitive)
+ Addedhar-validator@5.0.3(transitive)
+ Addedjson-schema-traverse@0.3.1(transitive)
+ Addedpostman-url-encoder@1.0.1(transitive)
+ Addedqs@6.4.1(transitive)
- Removedajv@4.11.8(transitive)
- Removedaws-sign2@0.6.0(transitive)
- Removedcall-bind@1.0.7(transitive)
- Removeddefine-data-property@1.1.4(transitive)
- Removedes-define-property@1.0.0(transitive)
- Removedes-errors@1.3.0(transitive)
- Removedfunction-bind@1.1.2(transitive)
- Removedget-intrinsic@1.2.4(transitive)
- Removedgopd@1.0.1(transitive)
- Removedhar-schema@1.0.5(transitive)
- Removedhar-validator@4.2.1(transitive)
- Removedhas-property-descriptors@1.0.2(transitive)
- Removedhas-proto@1.0.3(transitive)
- Removedhas-symbols@1.0.3(transitive)
- Removedhasown@2.0.2(transitive)
- Removedisarray@2.0.5(transitive)
- Removedjson-stable-stringify@1.1.1(transitive)
- Removedjsonify@0.0.1(transitive)
- Removedobject-keys@1.1.1(transitive)
- Removedpostman-url-encoder@1.0.3(transitive)
- Removedqs@6.3.3(transitive)
- Removedset-function-length@1.2.2(transitive)
Updatedaws-sign2@~0.7.0
Updatedhar-validator@~5.0.2
Updatedpostman-url-encoder@1.0.1
Updatedqs@~6.4.0