2
0
mirror of https://github.com/tenrok/axios.git synced 2026-05-24 14:04:14 +03:00
Files
axios/lib/axios.js
T
2014-09-29 22:37:04 -06:00

101 lines
2.7 KiB
JavaScript

var Promise = require('es6-promise').Promise;
var defaults = require('./defaults');
var utils = require('./utils');
var axios = module.exports = function axios(config) {
config = utils.merge({
method: 'get',
headers: {},
transformRequest: defaults.transformRequest,
transformResponse: defaults.transformResponse
}, config);
// Don't allow overriding defaults.withCredentials
config.withCredentials = config.withCredentials || defaults.withCredentials;
var promise = new Promise(function (resolve, reject) {
try {
// For browsers use XHR adapter
if (typeof window !== 'undefined') {
require('./adapters/xhr')(resolve, reject, config);
}
// For node use HTTP adapter
else if (typeof process !== 'undefined') {
require('./adapters/http')(resolve, reject, config);
}
} catch (e) {
reject(e);
}
});
function deprecatedMethod(method, instead, docs) {
try {
console.warn(
'DEPRECATED method `' + method + '`.' +
(instead ? ' Use `' + instead + '` instead.' : '') +
' This method will be removed in a future release.');
if (docs) {
console.warn('For more information about usage see ' + docs);
}
} catch (e) {}
}
// Provide alias for success
promise.success = function success(fn) {
deprecatedMethod('success', 'then', 'https://github.com/mzabriskie/axios/blob/master/README.md#response-api');
promise.then(function(response) {
fn(response.data, response.status, response.headers, response.config);
});
return promise;
};
// Provide alias for error
promise.error = function error(fn) {
deprecatedMethod('error', 'catch', 'https://github.com/mzabriskie/axios/blob/master/README.md#response-api');
promise.then(null, function(response) {
fn(response.data, response.status, response.headers, response.config);
});
return promise;
};
return promise;
};
// Expose defaults
axios.defaults = defaults;
// Expose all/spread
axios.all = function (promises) {
return Promise.all(promises);
};
axios.spread = require('./helpers/spread');
// Provide aliases for supported request methods
createShortMethods('delete', 'get', 'head');
createShortMethodsWithData('post', 'put', 'patch');
function createShortMethods() {
utils.forEach(arguments, function (method) {
axios[method] = function (url, config) {
return axios(utils.merge(config || {}, {
method: method,
url: url
}));
};
});
}
function createShortMethodsWithData() {
utils.forEach(arguments, function (method) {
axios[method] = function (url, data, config) {
return axios(utils.merge(config || {}, {
method: method,
url: url,
data: data
}));
};
});
}