85 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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'
 | |
| ] |