You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
3.5 KiB
134 lines
3.5 KiB
'use strict'; |
|
|
|
var utils = require('./utils'); |
|
var normalizeHeaderName = require('./helpers/normalizeHeaderName'); |
|
var enhanceError = require('./core/enhanceError'); |
|
|
|
var DEFAULT_CONTENT_TYPE = { |
|
'Content-Type': 'application/x-www-form-urlencoded' |
|
}; |
|
|
|
function setContentTypeIfUnset(headers, value) { |
|
if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { |
|
headers['Content-Type'] = value; |
|
} |
|
} |
|
|
|
function getDefaultAdapter() { |
|
var adapter; |
|
if (typeof XMLHttpRequest !== 'undefined') { |
|
// For browsers use XHR adapter |
|
adapter = require('./adapters/xhr'); |
|
} else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { |
|
// For node use HTTP adapter |
|
adapter = require('./adapters/http'); |
|
} |
|
return adapter; |
|
} |
|
|
|
function stringifySafely(rawValue, parser, encoder) { |
|
if (utils.isString(rawValue)) { |
|
try { |
|
(parser || JSON.parse)(rawValue); |
|
return utils.trim(rawValue); |
|
} catch (e) { |
|
if (e.name !== 'SyntaxError') { |
|
throw e; |
|
} |
|
} |
|
} |
|
|
|
return (encoder || JSON.stringify)(rawValue); |
|
} |
|
|
|
var defaults = { |
|
|
|
transitional: { |
|
silentJSONParsing: true, |
|
forcedJSONParsing: true, |
|
clarifyTimeoutError: false |
|
}, |
|
|
|
adapter: getDefaultAdapter(), |
|
|
|
transformRequest: [function transformRequest(data, headers) { |
|
normalizeHeaderName(headers, 'Accept'); |
|
normalizeHeaderName(headers, 'Content-Type'); |
|
|
|
if (utils.isFormData(data) || |
|
utils.isArrayBuffer(data) || |
|
utils.isBuffer(data) || |
|
utils.isStream(data) || |
|
utils.isFile(data) || |
|
utils.isBlob(data) |
|
) { |
|
return data; |
|
} |
|
if (utils.isArrayBufferView(data)) { |
|
return data.buffer; |
|
} |
|
if (utils.isURLSearchParams(data)) { |
|
setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); |
|
return data.toString(); |
|
} |
|
if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) { |
|
setContentTypeIfUnset(headers, 'application/json'); |
|
return stringifySafely(data); |
|
} |
|
return data; |
|
}], |
|
|
|
transformResponse: [function transformResponse(data) { |
|
var transitional = this.transitional; |
|
var silentJSONParsing = transitional && transitional.silentJSONParsing; |
|
var forcedJSONParsing = transitional && transitional.forcedJSONParsing; |
|
var strictJSONParsing = !silentJSONParsing && this.responseType === 'json'; |
|
|
|
if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) { |
|
try { |
|
return JSON.parse(data); |
|
} catch (e) { |
|
if (strictJSONParsing) { |
|
if (e.name === 'SyntaxError') { |
|
throw enhanceError(e, this, 'E_JSON_PARSE'); |
|
} |
|
throw e; |
|
} |
|
} |
|
} |
|
|
|
return data; |
|
}], |
|
|
|
/** |
|
* A timeout in milliseconds to abort a request. If set to 0 (default) a |
|
* timeout is not created. |
|
*/ |
|
timeout: 0, |
|
|
|
xsrfCookieName: 'XSRF-TOKEN', |
|
xsrfHeaderName: 'X-XSRF-TOKEN', |
|
|
|
maxContentLength: -1, |
|
maxBodyLength: -1, |
|
|
|
validateStatus: function validateStatus(status) { |
|
return status >= 200 && status < 300; |
|
} |
|
}; |
|
|
|
defaults.headers = { |
|
common: { |
|
'Accept': 'application/json, text/plain, */*' |
|
} |
|
}; |
|
|
|
utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { |
|
defaults.headers[method] = {}; |
|
}); |
|
|
|
utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { |
|
defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); |
|
}); |
|
|
|
module.exports = defaults;
|
|
|