//"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' ];