135 lines
3.5 KiB
JavaScript
135 lines
3.5 KiB
JavaScript
|
'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;
|