Spaces:
Configuration error
Configuration error
/* | |
this and http-lib folder | |
The MIT License | |
Copyright (c) 2015 John Hiesey | |
Permission is hereby granted, free of charge, | |
to any person obtaining a copy of this software and | |
associated documentation files (the "Software"), to | |
deal in the Software without restriction, including | |
without limitation the rights to use, copy, modify, | |
merge, publish, distribute, sublicense, and/or sell | |
copies of the Software, and to permit persons to whom | |
the Software is furnished to do so, | |
subject to the following conditions: | |
The above copyright notice and this permission notice | |
shall be included in all copies or substantial portions of the Software. | |
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | |
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR | |
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | |
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | |
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
*/ | |
import ClientRequest from './http-lib/request'; | |
import {parse} from 'url'; | |
export function request(opts, cb) { | |
if (typeof opts === 'string') | |
opts = parse(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 | |
} | |
export function get(opts, cb) { | |
var req = request(opts, cb) | |
req.end() | |
return req | |
} | |
export function Agent() {} | |
Agent.defaultMaxSockets = 4 | |
export var 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' | |
] | |
export var STATUS_CODES = { | |
100: 'Continue', | |
101: 'Switching Protocols', | |
102: 'Processing', // RFC 2518, obsoleted by RFC 4918 | |
200: 'OK', | |
201: 'Created', | |
202: 'Accepted', | |
203: 'Non-Authoritative Information', | |
204: 'No Content', | |
205: 'Reset Content', | |
206: 'Partial Content', | |
207: 'Multi-Status', // RFC 4918 | |
300: 'Multiple Choices', | |
301: 'Moved Permanently', | |
302: 'Moved Temporarily', | |
303: 'See Other', | |
304: 'Not Modified', | |
305: 'Use Proxy', | |
307: 'Temporary Redirect', | |
400: 'Bad Request', | |
401: 'Unauthorized', | |
402: 'Payment Required', | |
403: 'Forbidden', | |
404: 'Not Found', | |
405: 'Method Not Allowed', | |
406: 'Not Acceptable', | |
407: 'Proxy Authentication Required', | |
408: 'Request Time-out', | |
409: 'Conflict', | |
410: 'Gone', | |
411: 'Length Required', | |
412: 'Precondition Failed', | |
413: 'Request Entity Too Large', | |
414: 'Request-URI Too Large', | |
415: 'Unsupported Media Type', | |
416: 'Requested Range Not Satisfiable', | |
417: 'Expectation Failed', | |
418: 'I\'m a teapot', // RFC 2324 | |
422: 'Unprocessable Entity', // RFC 4918 | |
423: 'Locked', // RFC 4918 | |
424: 'Failed Dependency', // RFC 4918 | |
425: 'Unordered Collection', // RFC 4918 | |
426: 'Upgrade Required', // RFC 2817 | |
428: 'Precondition Required', // RFC 6585 | |
429: 'Too Many Requests', // RFC 6585 | |
431: 'Request Header Fields Too Large', // RFC 6585 | |
500: 'Internal Server Error', | |
501: 'Not Implemented', | |
502: 'Bad Gateway', | |
503: 'Service Unavailable', | |
504: 'Gateway Time-out', | |
505: 'HTTP Version Not Supported', | |
506: 'Variant Also Negotiates', // RFC 2295 | |
507: 'Insufficient Storage', // RFC 4918 | |
509: 'Bandwidth Limit Exceeded', | |
510: 'Not Extended', // RFC 2774 | |
511: 'Network Authentication Required' // RFC 6585 | |
}; | |
export default { | |
request, | |
get, | |
Agent, | |
METHODS, | |
STATUS_CODES | |
} | |