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'
							 | 
						|
								]
							 |