Projekt

Obecné

Profil

Stáhnout (1.84 KB) Statistiky
| Větev: | Revize:
1 3a515b92 cagy
var ClientRequest = require('./lib/request')
2
var response = require('./lib/response')
3
var extend = require('xtend')
4
var statusCodes = require('builtin-status-codes')
5
var url = require('url')
6
7
var http = exports
8
9
http.request = function (opts, cb) {
10
	if (typeof opts === 'string')
11
		opts = url.parse(opts)
12
	else
13
		opts = extend(opts)
14
15
	// Normally, the page is loaded from http or https, so not specifying a protocol
16
	// will result in a (valid) protocol-relative url. However, this won't work if
17
	// the protocol is something else, like 'file:'
18
	var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''
19
20
	var protocol = opts.protocol || defaultProtocol
21
	var host = opts.hostname || opts.host
22
	var port = opts.port
23
	var path = opts.path || '/'
24
25
	// Necessary for IPv6 addresses
26
	if (host && host.indexOf(':') !== -1)
27
		host = '[' + host + ']'
28
29
	// This may be a relative url. The browser should always be able to interpret it correctly.
30
	opts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path
31
	opts.method = (opts.method || 'GET').toUpperCase()
32
	opts.headers = opts.headers || {}
33
34
	// Also valid opts.auth, opts.mode
35
36
	var req = new ClientRequest(opts)
37
	if (cb)
38
		req.on('response', cb)
39
	return req
40
}
41
42
http.get = function get (opts, cb) {
43
	var req = http.request(opts, cb)
44
	req.end()
45
	return req
46
}
47
48
http.ClientRequest = ClientRequest
49
http.IncomingMessage = response.IncomingMessage
50
51
http.Agent = function () {}
52
http.Agent.defaultMaxSockets = 4
53
54
http.globalAgent = new http.Agent()
55
56
http.STATUS_CODES = statusCodes
57
58
http.METHODS = [
59
	'CHECKOUT',
60
	'CONNECT',
61
	'COPY',
62
	'DELETE',
63
	'GET',
64
	'HEAD',
65
	'LOCK',
66
	'M-SEARCH',
67
	'MERGE',
68
	'MKACTIVITY',
69
	'MKCOL',
70
	'MOVE',
71
	'NOTIFY',
72
	'OPTIONS',
73
	'PATCH',
74
	'POST',
75
	'PROPFIND',
76
	'PROPPATCH',
77
	'PURGE',
78
	'PUT',
79
	'REPORT',
80
	'SEARCH',
81
	'SUBSCRIBE',
82
	'TRACE',
83
	'UNLOCK',
84
	'UNSUBSCRIBE'
85
]