mirror of
https://github.com/tenrok/axios.git
synced 2026-06-23 20:40:40 +03:00
Adding support for node
This commit is contained in:
Vendored
+7090
-384
File diff suppressed because it is too large
Load Diff
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+8
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+7090
-384
File diff suppressed because it is too large
Load Diff
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+8
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -0,0 +1,66 @@
|
|||||||
|
var buildUrl = require('./../buildUrl');
|
||||||
|
var defaults = require('./../defaults');
|
||||||
|
var transformData = require('./../transformData');
|
||||||
|
var utils = require('./../utils');
|
||||||
|
var http = require('http');
|
||||||
|
var url = require('url');
|
||||||
|
|
||||||
|
module.exports = function httpAdapter(resolve, reject, config) {
|
||||||
|
// Transform request data
|
||||||
|
var data = transformData(
|
||||||
|
config.data,
|
||||||
|
config.headers,
|
||||||
|
config.transformRequest
|
||||||
|
);
|
||||||
|
|
||||||
|
// Merge headers
|
||||||
|
var headers = utils.merge(
|
||||||
|
defaults.headers.common,
|
||||||
|
defaults.headers[config.method] || {},
|
||||||
|
config.headers || {}
|
||||||
|
);
|
||||||
|
|
||||||
|
// Parse url
|
||||||
|
var parsed = url.parse(config.url);
|
||||||
|
var options = {
|
||||||
|
host: parsed.hostname,
|
||||||
|
port: parsed.port,
|
||||||
|
path: buildUrl(parsed.path, config.params).replace(/^\?/, ''),
|
||||||
|
method: config.method,
|
||||||
|
headers: headers
|
||||||
|
};
|
||||||
|
|
||||||
|
// Create the request
|
||||||
|
var req = http.request(options, function (res) {
|
||||||
|
var responseText = '';
|
||||||
|
res.on('data', function (chunk) {
|
||||||
|
responseText += chunk;
|
||||||
|
});
|
||||||
|
|
||||||
|
res.on('end', function () {
|
||||||
|
var response = {
|
||||||
|
data: transformData(
|
||||||
|
responseText,
|
||||||
|
res.headers,
|
||||||
|
config.transformResponse
|
||||||
|
),
|
||||||
|
status: res.statusCode,
|
||||||
|
headers: res.headers,
|
||||||
|
config: config
|
||||||
|
};
|
||||||
|
|
||||||
|
// Resolve or reject the Promise based on the status
|
||||||
|
(res.statusCode >= 200 && res.statusCode < 300
|
||||||
|
? resolve
|
||||||
|
: reject)(
|
||||||
|
response.data,
|
||||||
|
response.status,
|
||||||
|
response.headers,
|
||||||
|
response.config
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Send the request
|
||||||
|
req.end(data);
|
||||||
|
};
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
var buildUrl = require('./../buildUrl');
|
||||||
|
var cookies = require('./../cookies');
|
||||||
|
var defaults = require('./../defaults');
|
||||||
|
var parseHeaders = require('./../parseHeaders');
|
||||||
|
var transformData = require('./../transformData');
|
||||||
|
var urlIsSameOrigin = require('./../urlIsSameOrigin');
|
||||||
|
var utils = require('./../utils');
|
||||||
|
|
||||||
|
module.exports = function xhrAdapter(resolve, reject, config) {
|
||||||
|
// Transform request data
|
||||||
|
var data = transformData(
|
||||||
|
config.data,
|
||||||
|
config.headers,
|
||||||
|
config.transformRequest
|
||||||
|
);
|
||||||
|
|
||||||
|
// Merge headers
|
||||||
|
var headers = utils.merge(
|
||||||
|
defaults.headers.common,
|
||||||
|
defaults.headers[config.method] || {},
|
||||||
|
config.headers || {}
|
||||||
|
);
|
||||||
|
|
||||||
|
// Create the request
|
||||||
|
var request = new(XMLHttpRequest || ActiveXObject)('Microsoft.XMLHTTP');
|
||||||
|
request.open(config.method, buildUrl(config.url, config.params), true);
|
||||||
|
|
||||||
|
// Listen for ready state
|
||||||
|
request.onreadystatechange = function () {
|
||||||
|
if (request && request.readyState === 4) {
|
||||||
|
// Prepare the response
|
||||||
|
var headers = parseHeaders(request.getAllResponseHeaders());
|
||||||
|
var response = {
|
||||||
|
data: transformData(
|
||||||
|
request.responseText,
|
||||||
|
headers,
|
||||||
|
config.transformResponse
|
||||||
|
),
|
||||||
|
status: request.status,
|
||||||
|
headers: headers,
|
||||||
|
config: config
|
||||||
|
};
|
||||||
|
|
||||||
|
// Resolve or reject the Promise based on the status
|
||||||
|
(request.status >= 200 && request.status < 300
|
||||||
|
? resolve
|
||||||
|
: reject)(
|
||||||
|
response.data,
|
||||||
|
response.status,
|
||||||
|
response.headers,
|
||||||
|
response.config
|
||||||
|
);
|
||||||
|
|
||||||
|
// Clean up request
|
||||||
|
request = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add xsrf header
|
||||||
|
var xsrfValue = urlIsSameOrigin(config.url)
|
||||||
|
? cookies.read(config.xsrfCookieName || defaults.xsrfCookieName)
|
||||||
|
: undefined;
|
||||||
|
if (xsrfValue) {
|
||||||
|
headers[config.xsrfHeaderName || defaults.xsrfHeaderName] = xsrfValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add headers to the request
|
||||||
|
utils.forEach(headers, function (val, key) {
|
||||||
|
// Remove Content-Type if data is undefined
|
||||||
|
if (!data && key.toLowerCase() === 'content-type') {
|
||||||
|
delete headers[key];
|
||||||
|
}
|
||||||
|
// Otherwise add header to the request
|
||||||
|
else {
|
||||||
|
request.setRequestHeader(key, val);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add withCredentials to request if needed
|
||||||
|
if (config.withCredentials) {
|
||||||
|
request.withCredentials = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add responseType to request if needed
|
||||||
|
if (config.responseType) {
|
||||||
|
try {
|
||||||
|
request.responseType = config.responseType;
|
||||||
|
} catch (e) {
|
||||||
|
if (request.responseType !== 'json') {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send the request
|
||||||
|
request.send(data);
|
||||||
|
};
|
||||||
+10
-89
@@ -1,10 +1,5 @@
|
|||||||
var Promise = require('es6-promise').Promise;
|
var Promise = require('es6-promise').Promise;
|
||||||
var buildUrl = require('./buildUrl');
|
|
||||||
var cookies = require('./cookies');
|
|
||||||
var defaults = require('./defaults');
|
var defaults = require('./defaults');
|
||||||
var parseHeaders = require('./parseHeaders');
|
|
||||||
var transformData = require('./transformData');
|
|
||||||
var urlIsSameOrigin = require('./urlIsSameOrigin');
|
|
||||||
var utils = require('./utils');
|
var utils = require('./utils');
|
||||||
var spread = require('./spread');
|
var spread = require('./spread');
|
||||||
|
|
||||||
@@ -19,92 +14,18 @@ var axios = module.exports = function axios(config) {
|
|||||||
config.withCredentials = config.withCredentials || defaults.withCredentials;
|
config.withCredentials = config.withCredentials || defaults.withCredentials;
|
||||||
|
|
||||||
var promise = new Promise(function (resolve, reject) {
|
var promise = new Promise(function (resolve, reject) {
|
||||||
// Create the request
|
try {
|
||||||
var request = new(XMLHttpRequest || ActiveXObject)('Microsoft.XMLHTTP');
|
// For browsers use XHR adapter
|
||||||
var data = transformData(
|
if (typeof window !== 'undefined') {
|
||||||
config.data,
|
require('./adapters/xhr')(resolve, reject, config);
|
||||||
config.headers,
|
|
||||||
config.transformRequest
|
|
||||||
);
|
|
||||||
|
|
||||||
// Open the request
|
|
||||||
request.open(config.method, buildUrl(config.url, config.params), true);
|
|
||||||
|
|
||||||
// Listen for ready state
|
|
||||||
request.onreadystatechange = function () {
|
|
||||||
if (request && request.readyState === 4) {
|
|
||||||
// Prepare the response
|
|
||||||
var headers = parseHeaders(request.getAllResponseHeaders());
|
|
||||||
var response = {
|
|
||||||
data: transformData(
|
|
||||||
request.responseText,
|
|
||||||
headers,
|
|
||||||
config.transformResponse
|
|
||||||
),
|
|
||||||
status: request.status,
|
|
||||||
headers: headers,
|
|
||||||
config: config
|
|
||||||
};
|
|
||||||
|
|
||||||
// Resolve or reject the Promise based on the status
|
|
||||||
(request.status >= 200 && request.status < 300
|
|
||||||
? resolve
|
|
||||||
: reject)(
|
|
||||||
response.data,
|
|
||||||
response.status,
|
|
||||||
response.headers,
|
|
||||||
response.config
|
|
||||||
);
|
|
||||||
|
|
||||||
// Clean up request
|
|
||||||
request = null;
|
|
||||||
}
|
}
|
||||||
};
|
// For node use HTTP adapter
|
||||||
|
else if (typeof process !== 'undefined') {
|
||||||
// Merge headers and add to request
|
require('./adapters/http')(resolve, reject, config);
|
||||||
var headers = utils.merge(
|
}
|
||||||
defaults.headers.common,
|
} catch (e) {
|
||||||
defaults.headers[config.method] || {},
|
reject(e);
|
||||||
config.headers || {}
|
|
||||||
);
|
|
||||||
|
|
||||||
// Add xsrf header
|
|
||||||
var xsrfValue = urlIsSameOrigin(config.url)
|
|
||||||
? cookies.read(config.xsrfCookieName || defaults.xsrfCookieName)
|
|
||||||
: undefined;
|
|
||||||
if (xsrfValue) {
|
|
||||||
headers[config.xsrfHeaderName || defaults.xsrfHeaderName] = xsrfValue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.forEach(headers, function (val, key) {
|
|
||||||
// Remove Content-Type if data is undefined
|
|
||||||
if (!data && key.toLowerCase() === 'content-type') {
|
|
||||||
delete headers[key];
|
|
||||||
}
|
|
||||||
// Otherwise add header to the request
|
|
||||||
else {
|
|
||||||
request.setRequestHeader(key, val);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add withCredentials to request if needed
|
|
||||||
if (config.withCredentials) {
|
|
||||||
request.withCredentials = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add responseType to request if needed
|
|
||||||
if (config.responseType) {
|
|
||||||
try {
|
|
||||||
request.responseType = config.responseType;
|
|
||||||
} catch (e) {
|
|
||||||
if (request.responseType !== 'json') {
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send the request
|
|
||||||
request.send(data);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Provide alias for success
|
// Provide alias for success
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "grunt test",
|
"test": "grunt test",
|
||||||
"start": "node ./sandbox/index.js"
|
"start": "node ./sandbox/server.js"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
var axios = require('../index');
|
||||||
|
|
||||||
|
var URL = 'http://127.0.0.1:3000/api';
|
||||||
|
var BODY = {
|
||||||
|
foo: 'bar',
|
||||||
|
baz: 1234
|
||||||
|
};
|
||||||
|
|
||||||
|
function handleSuccess(data) { console.log(data); }
|
||||||
|
function handleFailure(data) { console.log('error', data); }
|
||||||
|
|
||||||
|
// GET
|
||||||
|
axios.get(URL, { params: BODY })
|
||||||
|
.then(handleSuccess)
|
||||||
|
.catch(handleFailure);
|
||||||
|
|
||||||
|
// POST
|
||||||
|
axios.post(URL, BODY)
|
||||||
|
.then(handleSuccess)
|
||||||
|
.catch(handleFailure);
|
||||||
@@ -4,6 +4,16 @@ var path = require('path');
|
|||||||
var http = require('http');
|
var http = require('http');
|
||||||
var server;
|
var server;
|
||||||
|
|
||||||
|
function pipeFileToResponse(res, file, type) {
|
||||||
|
if (type) {
|
||||||
|
res.writeHead(200, {
|
||||||
|
'Content-Type': type
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.createReadStream(path.join(__dirname, file)).pipe(res);
|
||||||
|
}
|
||||||
|
|
||||||
server = http.createServer(function (req, res) {
|
server = http.createServer(function (req, res) {
|
||||||
req.setEncoding('utf8');
|
req.setEncoding('utf8');
|
||||||
|
|
||||||
@@ -17,12 +27,11 @@ server = http.createServer(function (req, res) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pathname === '/index.html') {
|
if (pathname === '/index.html') {
|
||||||
fs.createReadStream(path.join(__dirname, pathname)).pipe(res);
|
pipeFileToResponse(res, './client.html');
|
||||||
} else if (pathname === '/axios.js') {
|
} else if (pathname === '/axios.js') {
|
||||||
res.writeHead(200, {
|
pipeFileToResponse(res, '../dist/axios.js', 'text/javascript');
|
||||||
'Content-Type': 'text/javascript'
|
} else if (pathname === '/axios.map') {
|
||||||
});
|
pipeFileToResponse(res, '../dist/axios.map', 'text/javascript');
|
||||||
fs.createReadStream(path.join(__dirname, '../dist/axios.js')).pipe(res);
|
|
||||||
} else if (pathname === '/api') {
|
} else if (pathname === '/api') {
|
||||||
var status;
|
var status;
|
||||||
var result;
|
var result;
|
||||||
Reference in New Issue
Block a user