hexo/node_modules/ali-oss/shims/stream-http/index.js

83 lines
2.0 KiB
JavaScript

//"version": "2.8.2",
var ClientRequest = require('./lib/request');
var response = require('./lib/response');
var extend = require('xtend');
var statusCodes = require('builtin-status-codes');
var url = require('url');
var http = exports;
http.request = function (opts, cb) {
if (typeof opts === 'string') opts = url.parse(opts);
else opts = extend(opts);
// Normally, the page is loaded from http or https, so not specifying a protocol
// will result in a (valid) protocol-relative url. However, this won't work if
// the protocol is something else, like 'file:'
var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : '';
var protocol = opts.protocol || defaultProtocol;
var host = opts.hostname || opts.host;
var port = opts.port;
var path = opts.path || '/';
// Necessary for IPv6 addresses
if (host && host.indexOf(':') !== -1) host = '[' + host + ']';
// This may be a relative url. The browser should always be able to interpret it correctly.
opts.url = (host ? protocol + '//' + host : '') + (port ? ':' + port : '') + path;
opts.method = (opts.method || 'GET').toUpperCase();
opts.headers = opts.headers || {};
// Also valid opts.auth, opts.mode
var req = new ClientRequest(opts);
if (cb) req.on('response', cb);
return req;
};
http.get = function get(opts, cb) {
var req = http.request(opts, cb);
req.end();
return req;
};
http.ClientRequest = ClientRequest;
http.IncomingMessage = response.IncomingMessage;
http.Agent = function () {};
http.Agent.defaultMaxSockets = 4;
http.globalAgent = new http.Agent();
http.STATUS_CODES = statusCodes;
http.METHODS = [
'CHECKOUT',
'CONNECT',
'COPY',
'DELETE',
'GET',
'HEAD',
'LOCK',
'M-SEARCH',
'MERGE',
'MKACTIVITY',
'MKCOL',
'MOVE',
'NOTIFY',
'OPTIONS',
'PATCH',
'POST',
'PROPFIND',
'PROPPATCH',
'PURGE',
'PUT',
'REPORT',
'SEARCH',
'SUBSCRIBE',
'TRACE',
'UNLOCK',
'UNSUBSCRIBE'
];