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