modif comtabilite
This commit is contained in:
+206
-130
@@ -1,46 +1,46 @@
|
||||
'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')
|
||||
, 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
|
||||
var https = require('https')
|
||||
var url = require('url')
|
||||
var util = require('util')
|
||||
var stream = require('stream')
|
||||
var zlib = require('zlib')
|
||||
var aws2 = require('aws-sign2')
|
||||
var aws4 = require('aws4')
|
||||
var httpSignature = require('http-signature')
|
||||
var mime = require('mime-types')
|
||||
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 hawk = require('./lib/hawk')
|
||||
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 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.
|
||||
// Reserved values are passed in at call site.
|
||||
|
||||
@@ -54,7 +54,7 @@ function filterForNonReserved(reserved, options) {
|
||||
return object
|
||||
}
|
||||
|
||||
function filterOutReservedFunctions(reserved, options) {
|
||||
function filterOutReservedFunctions (reserved, options) {
|
||||
// Filter out properties that are functions and are reserved.
|
||||
// Reserved values are passed in at call site.
|
||||
|
||||
@@ -67,11 +67,10 @@ function filterOutReservedFunctions(reserved, options) {
|
||||
}
|
||||
}
|
||||
return object
|
||||
|
||||
}
|
||||
|
||||
// Return a simpler request object to allow serialization
|
||||
function requestToJSON() {
|
||||
function requestToJSON () {
|
||||
var self = this
|
||||
return {
|
||||
uri: self.uri,
|
||||
@@ -81,7 +80,7 @@ function requestToJSON() {
|
||||
}
|
||||
|
||||
// Return a simpler response object to allow serialization
|
||||
function responseToJSON() {
|
||||
function responseToJSON () {
|
||||
var self = this
|
||||
return {
|
||||
statusCode: self.statusCode,
|
||||
@@ -132,7 +131,7 @@ util.inherits(Request, stream.Stream)
|
||||
|
||||
// Debugging
|
||||
Request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG)
|
||||
function debug() {
|
||||
function debug () {
|
||||
if (Request.debug) {
|
||||
console.error('REQUEST %s', util.format.apply(util, arguments))
|
||||
}
|
||||
@@ -256,7 +255,7 @@ Request.prototype.init = function (options) {
|
||||
self.rejectUnauthorized = false
|
||||
}
|
||||
|
||||
if (!self.uri.pathname) {self.uri.pathname = '/'}
|
||||
if (!self.uri.pathname) { self.uri.pathname = '/' }
|
||||
|
||||
if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) {
|
||||
// Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar
|
||||
@@ -288,11 +287,12 @@ Request.prototype.init = function (options) {
|
||||
self.setHost = false
|
||||
if (!self.hasHeader('host')) {
|
||||
var hostHeaderName = self.originalHostHeaderName || 'host'
|
||||
self.setHeader(hostHeaderName, self.uri.hostname)
|
||||
self.setHeader(hostHeaderName, self.uri.host)
|
||||
// Drop :port suffix from Host header if known protocol.
|
||||
if (self.uri.port) {
|
||||
if ( !(self.uri.port === 80 && self.uri.protocol === 'http:') &&
|
||||
!(self.uri.port === 443 && self.uri.protocol === 'https:') ) {
|
||||
self.setHeader(hostHeaderName, self.getHeader('host') + (':' + self.uri.port) )
|
||||
if ((self.uri.port === '80' && self.uri.protocol === 'http:') ||
|
||||
(self.uri.port === '443' && self.uri.protocol === 'https:')) {
|
||||
self.setHeader(hostHeaderName, self.uri.hostname)
|
||||
}
|
||||
}
|
||||
self.setHost = true
|
||||
@@ -301,8 +301,7 @@ Request.prototype.init = function (options) {
|
||||
self.jar(self._jar || options.jar)
|
||||
|
||||
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 }
|
||||
}
|
||||
|
||||
if (self.proxy && !self.tunnel) {
|
||||
@@ -389,12 +388,12 @@ Request.prototype.init = function (options) {
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
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(':'))
|
||||
self.setHeader('proxy-authorization', authHeader)
|
||||
}
|
||||
@@ -412,23 +411,23 @@ Request.prototype.init = function (options) {
|
||||
|
||||
if (options.time) {
|
||||
self.timing = true
|
||||
|
||||
// NOTE: elapsedTime is deprecated in favor of .timings
|
||||
self.elapsedTime = self.elapsedTime || 0
|
||||
}
|
||||
|
||||
function setContentLength () {
|
||||
if (isTypedArray(self.body)) {
|
||||
self.body = new Buffer(self.body)
|
||||
self.body = Buffer.from(self.body)
|
||||
}
|
||||
|
||||
if (!self.hasHeader('content-length')) {
|
||||
var length
|
||||
if (typeof self.body === 'string') {
|
||||
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
|
||||
}
|
||||
|
||||
@@ -450,8 +449,8 @@ Request.prototype.init = function (options) {
|
||||
}
|
||||
|
||||
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 || {}
|
||||
|
||||
self.httpModule = httpModules[protocol] || defaultModules[protocol]
|
||||
|
||||
@@ -516,9 +515,9 @@ Request.prototype.init = function (options) {
|
||||
}
|
||||
}
|
||||
|
||||
// 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.')
|
||||
// })
|
||||
})
|
||||
|
||||
defer(function () {
|
||||
@@ -530,8 +529,7 @@ Request.prototype.init = function (options) {
|
||||
if (self._form) {
|
||||
if (!self._auth.hasAuth) {
|
||||
self._form.pipe(self)
|
||||
}
|
||||
else if (self._auth.hasAuth && self._auth.sentAuth) {
|
||||
} else if (self._auth.hasAuth && self._auth.sentAuth) {
|
||||
self._form.pipe(self)
|
||||
}
|
||||
}
|
||||
@@ -582,7 +580,6 @@ Request.prototype.init = function (options) {
|
||||
|
||||
self.ntick = true
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
Request.prototype.getNewAgent = function () {
|
||||
@@ -713,6 +710,16 @@ Request.prototype.start = function () {
|
||||
// this is usually called on the first write(), end() or on nextTick()
|
||||
var self = this
|
||||
|
||||
if (self.timing) {
|
||||
// All timings will be relative to this request's startTime. In order to do this,
|
||||
// we need to capture the wall-clock start time (via Date), immediately followed
|
||||
// by the high-resolution timer (via now()). While these two won't be set
|
||||
// at the _exact_ same time, they should be close enough to be able to calculate
|
||||
// high-resolution, monotonically non-decreasing timestamps relative to startTime.
|
||||
var startTime = new Date().getTime()
|
||||
var startTimeNow = now()
|
||||
}
|
||||
|
||||
if (self._aborted) {
|
||||
return
|
||||
}
|
||||
@@ -748,7 +755,12 @@ Request.prototype.start = function () {
|
||||
}
|
||||
|
||||
if (self.timing) {
|
||||
self.startTime = new Date().getTime()
|
||||
self.startTime = startTime
|
||||
self.startTimeNow = startTimeNow
|
||||
|
||||
// Timing values will all be relative to startTime (by comparing to startTimeNow
|
||||
// so we have an accurate clock)
|
||||
self.timings = {}
|
||||
}
|
||||
|
||||
var timeout
|
||||
@@ -762,11 +774,37 @@ Request.prototype.start = function () {
|
||||
|
||||
self.req.on('response', self.onRequestResponse.bind(self))
|
||||
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) {
|
||||
var setReqTimeout = function() {
|
||||
|
||||
self.req.on('socket', function (socket) {
|
||||
// `._connecting` was the old property which was made public in node v6.1.0
|
||||
var isConnecting = socket._connecting || socket.connecting
|
||||
if (self.timing) {
|
||||
self.timings.socket = now() - self.startTimeNow
|
||||
|
||||
if (isConnecting) {
|
||||
var onLookupTiming = function () {
|
||||
self.timings.lookup = now() - self.startTimeNow
|
||||
}
|
||||
|
||||
var onConnectTiming = function () {
|
||||
self.timings.connect = now() - self.startTimeNow
|
||||
}
|
||||
|
||||
socket.once('lookup', onLookupTiming)
|
||||
socket.once('connect', onConnectTiming)
|
||||
|
||||
// clean up timing event listeners if needed on error
|
||||
self.req.once('error', function () {
|
||||
socket.removeListener('lookup', onLookupTiming)
|
||||
socket.removeListener('connect', onConnectTiming)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
var setReqTimeout = function () {
|
||||
// This timeout sets the amount of time to wait *between* bytes sent
|
||||
// from the server once connected.
|
||||
//
|
||||
@@ -782,15 +820,13 @@ Request.prototype.start = function () {
|
||||
}
|
||||
})
|
||||
}
|
||||
// `._connecting` was the old property which was made public in node v6.1.0
|
||||
var isConnecting = socket._connecting || socket.connecting
|
||||
if (timeout !== undefined) {
|
||||
// Only start the connection timer if we're actually connecting a new
|
||||
// socket, otherwise if we're already connected (because this is a
|
||||
// keep-alive connection) do not bother. This is important since we won't
|
||||
// get a 'connect' event for an already connected socket.
|
||||
if (isConnecting) {
|
||||
var onReqSockConnect = function() {
|
||||
var onReqSockConnect = function () {
|
||||
socket.removeListener('connect', onReqSockConnect)
|
||||
clearTimeout(self.timeoutTimer)
|
||||
self.timeoutTimer = null
|
||||
@@ -799,7 +835,7 @@ Request.prototype.start = function () {
|
||||
|
||||
socket.on('connect', onReqSockConnect)
|
||||
|
||||
self.req.on('error', function(err) {
|
||||
self.req.on('error', function (err) { // eslint-disable-line handle-callback-err
|
||||
socket.removeListener('connect', onReqSockConnect)
|
||||
})
|
||||
|
||||
@@ -831,8 +867,8 @@ Request.prototype.onRequestError = function (error) {
|
||||
if (self._aborted) {
|
||||
return
|
||||
}
|
||||
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) }
|
||||
self.start()
|
||||
self.req.end()
|
||||
@@ -847,12 +883,52 @@ Request.prototype.onRequestError = function (error) {
|
||||
|
||||
Request.prototype.onRequestResponse = function (response) {
|
||||
var self = this
|
||||
|
||||
if (self.timing) {
|
||||
self.timings.response = now() - self.startTimeNow
|
||||
}
|
||||
|
||||
debug('onRequestResponse', self.uri.href, response.statusCode, response.headers)
|
||||
response.on('end', function() {
|
||||
response.on('end', function () {
|
||||
if (self.timing) {
|
||||
self.elapsedTime += (new Date().getTime() - self.startTime)
|
||||
debug('elapsed time', self.elapsedTime)
|
||||
self.timings.end = now() - self.startTimeNow
|
||||
response.timingStart = self.startTime
|
||||
|
||||
// fill in the blanks for any periods that didn't trigger, such as
|
||||
// no lookup or connect due to keep alive
|
||||
if (!self.timings.socket) {
|
||||
self.timings.socket = 0
|
||||
}
|
||||
if (!self.timings.lookup) {
|
||||
self.timings.lookup = self.timings.socket
|
||||
}
|
||||
if (!self.timings.connect) {
|
||||
self.timings.connect = self.timings.lookup
|
||||
}
|
||||
if (!self.timings.response) {
|
||||
self.timings.response = self.timings.connect
|
||||
}
|
||||
|
||||
debug('elapsed time', self.timings.end)
|
||||
|
||||
// elapsedTime includes all redirects
|
||||
self.elapsedTime += Math.round(self.timings.end)
|
||||
|
||||
// NOTE: elapsedTime is deprecated in favor of .timings
|
||||
response.elapsedTime = self.elapsedTime
|
||||
|
||||
// timings is just for the final fetch
|
||||
response.timings = self.timings
|
||||
|
||||
// pre-calculate phase timings as well
|
||||
response.timingPhases = {
|
||||
wait: self.timings.socket,
|
||||
dns: self.timings.lookup - self.timings.socket,
|
||||
tcp: self.timings.connect - self.timings.lookup,
|
||||
firstByte: self.timings.response - self.timings.connect,
|
||||
download: self.timings.end - self.timings.response,
|
||||
total: self.timings.end
|
||||
}
|
||||
}
|
||||
debug('response end', self.uri.href, response.statusCode, response.headers)
|
||||
})
|
||||
@@ -869,8 +945,8 @@ Request.prototype.onRequestResponse = function (response) {
|
||||
|
||||
// XXX This is different on 0.10, because SSL is strict by default
|
||||
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)
|
||||
var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL'
|
||||
self.emit('error', new Error('SSL Error: ' + sslErr))
|
||||
@@ -895,7 +971,7 @@ Request.prototype.onRequestResponse = function (response) {
|
||||
|
||||
var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar
|
||||
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 {
|
||||
targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true})
|
||||
} catch (e) {
|
||||
@@ -931,13 +1007,13 @@ Request.prototype.onRequestResponse = function (response) {
|
||||
|
||||
var noBody = function (code) {
|
||||
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
|
||||
)
|
||||
}
|
||||
|
||||
@@ -946,11 +1022,20 @@ Request.prototype.onRequestResponse = function (response) {
|
||||
var contentEncoding = response.headers['content-encoding'] || 'identity'
|
||||
contentEncoding = contentEncoding.trim().toLowerCase()
|
||||
|
||||
// Be more lenient with decoding compressed responses, since (very rarely)
|
||||
// servers send slightly invalid gzip responses that are still accepted
|
||||
// by common browsers.
|
||||
// Always using Z_SYNC_FLUSH is what cURL does.
|
||||
var zlibOptions = {
|
||||
flush: zlib.Z_SYNC_FLUSH,
|
||||
finishFlush: zlib.Z_SYNC_FLUSH
|
||||
}
|
||||
|
||||
if (contentEncoding === 'gzip') {
|
||||
responseContent = zlib.createGunzip()
|
||||
responseContent = zlib.createGunzip(zlibOptions)
|
||||
response.pipe(responseContent)
|
||||
} else if (contentEncoding === 'deflate') {
|
||||
responseContent = zlib.createInflate()
|
||||
responseContent = zlib.createInflate(zlibOptions)
|
||||
response.pipe(responseContent)
|
||||
} else {
|
||||
// Since previous versions didn't check for Content-Encoding header,
|
||||
@@ -967,13 +1052,8 @@ Request.prototype.onRequestResponse = function (response) {
|
||||
if (self.encoding) {
|
||||
if (self.dests.length !== 0) {
|
||||
console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.')
|
||||
} else if (responseContent.setEncoding) {
|
||||
responseContent.setEncoding(self.encoding)
|
||||
} else {
|
||||
// Should only occur on node pre-v0.9.4 (joyent/node@9b5abe5) with
|
||||
// zlib streams.
|
||||
// If/When support for 0.9.4 is dropped, this should be unnecessary.
|
||||
responseContent = responseContent.pipe(stringstream(self.encoding))
|
||||
responseContent.setEncoding(self.encoding)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -992,6 +1072,8 @@ Request.prototype.onRequestResponse = function (response) {
|
||||
responseContent.on('data', function (chunk) {
|
||||
if (self.timing && !self.responseStarted) {
|
||||
self.responseStartTime = (new Date()).getTime()
|
||||
|
||||
// NOTE: responseStartTime is deprecated in favor of .timings
|
||||
response.responseStartTime = self.responseStartTime
|
||||
}
|
||||
self._destdata = true
|
||||
@@ -1003,13 +1085,11 @@ Request.prototype.onRequestResponse = function (response) {
|
||||
responseContent.on('error', function (error) {
|
||||
self.emit('error', error)
|
||||
})
|
||||
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 () {
|
||||
if (self._aborted) {
|
||||
debug('aborted', self.uri.href)
|
||||
@@ -1024,10 +1104,10 @@ Request.prototype.onRequestResponse = function (response) {
|
||||
|
||||
Request.prototype.readResponseBody = function (response) {
|
||||
var self = this
|
||||
debug('reading response\'s body')
|
||||
debug("reading response's body")
|
||||
var buffers = []
|
||||
, bufferLength = 0
|
||||
, strings = []
|
||||
var bufferLength = 0
|
||||
var strings = []
|
||||
|
||||
self.on('data', function (chunk) {
|
||||
if (!Buffer.isBuffer(chunk)) {
|
||||
@@ -1076,7 +1156,7 @@ Request.prototype.readResponseBody = function (response) {
|
||||
}
|
||||
debug('emitting complete', self.uri.href)
|
||||
if (typeof response.body === 'undefined' && !self._json) {
|
||||
response.body = self.encoding === null ? new Buffer(0) : ''
|
||||
response.body = self.encoding === null ? Buffer.alloc(0) : ''
|
||||
}
|
||||
self.emit('complete', response, response.body)
|
||||
})
|
||||
@@ -1088,8 +1168,7 @@ Request.prototype.abort = function () {
|
||||
|
||||
if (self.req) {
|
||||
self.req.abort()
|
||||
}
|
||||
else if (self.response) {
|
||||
} else if (self.response) {
|
||||
self.response.destroy()
|
||||
}
|
||||
|
||||
@@ -1105,8 +1184,7 @@ Request.prototype.pipeDest = function (dest) {
|
||||
var ctname = response.caseless.has('content-type')
|
||||
if (dest.setHeader) {
|
||||
dest.setHeader(ctname, response.headers[ctname])
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
dest.headers[ctname] = response.headers[ctname]
|
||||
}
|
||||
}
|
||||
@@ -1177,7 +1255,7 @@ Request.prototype.form = function (form) {
|
||||
}
|
||||
// create form-data object
|
||||
self._form = new FormData()
|
||||
self._form.on('error', function(err) {
|
||||
self._form.on('error', function (err) {
|
||||
err.message = 'form-data: ' + err.message
|
||||
self.emit('error', err)
|
||||
self.abort()
|
||||
@@ -1252,8 +1330,8 @@ Request.prototype.getHeader = function (name, headers) {
|
||||
Request.prototype.enableUnixSocket = function () {
|
||||
// Get the socket & request paths from the URL
|
||||
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
|
||||
this.socketPath = host
|
||||
this.uri.pathname = path
|
||||
@@ -1263,7 +1341,6 @@ Request.prototype.enableUnixSocket = function () {
|
||||
this.uri.isUnix = true
|
||||
}
|
||||
|
||||
|
||||
Request.prototype.auth = function (user, pass, sendImmediately, bearer) {
|
||||
var self = this
|
||||
|
||||
@@ -1279,17 +1356,18 @@ Request.prototype.aws = function (opts, now) {
|
||||
return self
|
||||
}
|
||||
|
||||
if (opts.sign_version == 4 || opts.sign_version == '4') {
|
||||
if (opts.sign_version === 4 || opts.sign_version === '4') {
|
||||
// use aws4
|
||||
var options = {
|
||||
host: self.uri.host,
|
||||
path: self.uri.path,
|
||||
method: self.method,
|
||||
headers: {
|
||||
'content-type': self.getHeader('content-type') || ''
|
||||
},
|
||||
headers: self.headers,
|
||||
body: self.body
|
||||
}
|
||||
if (opts.service) {
|
||||
options.service = opts.service
|
||||
}
|
||||
var signRes = aws4.sign(options, {
|
||||
accessKeyId: opts.key,
|
||||
secretAccessKey: opts.secret,
|
||||
@@ -1300,20 +1378,19 @@ Request.prototype.aws = function (opts, now) {
|
||||
if (signRes.headers['X-Amz-Security-Token']) {
|
||||
self.setHeader('x-amz-security-token', signRes.headers['X-Amz-Security-Token'])
|
||||
}
|
||||
}
|
||||
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
|
||||
if (opts.bucket && path) {
|
||||
auth.resource = '/' + opts.bucket + path
|
||||
@@ -1333,10 +1410,10 @@ Request.prototype.aws = function (opts, now) {
|
||||
Request.prototype.httpSignature = function (opts) {
|
||||
var self = this
|
||||
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)
|
||||
},
|
||||
method: self.method,
|
||||
@@ -1348,7 +1425,7 @@ Request.prototype.httpSignature = function (opts) {
|
||||
}
|
||||
Request.prototype.hawk = function (opts) {
|
||||
var self = this
|
||||
self.setHeader('Authorization', hawk.client.header(self.uri, self.method, opts).field)
|
||||
self.setHeader('Authorization', hawk.header(self.uri, self.method, opts))
|
||||
}
|
||||
Request.prototype.oauth = function (_oauth) {
|
||||
var self = this
|
||||
@@ -1373,13 +1450,13 @@ Request.prototype.jar = function (jar) {
|
||||
} else {
|
||||
var targetCookieJar = (jar && jar.getCookieString) ? jar : globalCookieJar
|
||||
var urihref = self.uri.href
|
||||
//fetch cookie in the Specified host
|
||||
// fetch cookie in the Specified host
|
||||
if (targetCookieJar) {
|
||||
cookies = targetCookieJar.getCookieString(urihref)
|
||||
}
|
||||
}
|
||||
|
||||
//if need cookie and cookie is not empty
|
||||
// if need cookie and cookie is not empty
|
||||
if (cookies && cookies.length) {
|
||||
if (self.originalCookieHeader) {
|
||||
// Don't overwrite existing Cookie header
|
||||
@@ -1392,7 +1469,6 @@ Request.prototype.jar = function (jar) {
|
||||
return self
|
||||
}
|
||||
|
||||
|
||||
// Stream API
|
||||
Request.prototype.pipe = function (dest, opts) {
|
||||
var self = this
|
||||
@@ -1415,7 +1491,7 @@ Request.prototype.pipe = function (dest, opts) {
|
||||
}
|
||||
Request.prototype.write = function () {
|
||||
var self = this
|
||||
if (self._aborted) {return}
|
||||
if (self._aborted) { return }
|
||||
|
||||
if (!self._started) {
|
||||
self.start()
|
||||
@@ -1426,7 +1502,7 @@ Request.prototype.write = function () {
|
||||
}
|
||||
Request.prototype.end = function (chunk) {
|
||||
var self = this
|
||||
if (self._aborted) {return}
|
||||
if (self._aborted) { return }
|
||||
|
||||
if (chunk) {
|
||||
self.write(chunk)
|
||||
|
||||
Reference in New Issue
Block a user