UNPKG

web-request

Version:

Simplifies making web requests with TypeScript async/await

168 lines 6.84 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments)).next()); }); }; var request = require('request'); exports.throwResponseError = false; function get(uri, options) { return __awaiter(this, void 0, void 0, function* () { return yield create(uri, Object.assign({}, options, { method: 'GET' })).response; }); } exports.get = get; function post(uri, options, content) { return __awaiter(this, void 0, void 0, function* () { return yield create(uri, Object.assign({}, options, { method: 'POST' }), content).response; }); } exports.post = post; function put(uri, options, content) { return __awaiter(this, void 0, void 0, function* () { return yield create(uri, Object.assign({}, options, { method: 'PUT' }), content).response; }); } exports.put = put; function patch(uri, options, content) { return __awaiter(this, void 0, void 0, function* () { return yield create(uri, Object.assign({}, options, { method: 'PATCH' }), content).response; }); } exports.patch = patch; function head(uri, options) { return __awaiter(this, void 0, void 0, function* () { return yield create(uri, Object.assign({}, options, { method: 'HEAD' })).response; }); } exports.head = head; function del(uri, options) { return __awaiter(this, void 0, void 0, function* () { return yield create(uri, Object.assign({}, options, { method: 'DELETE' })).response; }); } exports.del = del; exports.delete = del; function json(uri, options) { return __awaiter(this, void 0, void 0, function* () { return (yield create(uri, Object.assign({}, options, { json: true })).response).content; }); } exports.json = json; function create(uri, options, content) { options = Object.assign({}, options, { uri: uri }); if (options.jar === true) options.jar = request.jar(); if (content !== undefined) options.body = content; var throwEnabled = exports.throwResponseError; if (options.throwResponseError !== undefined) throwEnabled = options.throwResponseError; var instance; var promise = new Promise((resolve, reject) => { instance = request(options, (err, message, body) => { if (!err) { var response = new Response(instance, message, body); if (message.statusCode < 400 || !throwEnabled) resolve(response); else reject(new ResponseError(response)); } else { reject(new RequestError(err, instance)); } }); }); instance.options = options; instance.response = promise; return instance; } exports.create = create; function stream(uri, options, content) { options = Object.assign({}, options, { uri: uri }); if (options.jar === true) options.jar = request.jar(); if (content !== undefined) options.body = content; var instance = request(options); instance.options = options; instance.response = new Promise((resolve, reject) => instance .on('complete', message => { var response = new Response(instance, message, null); if (message.statusCode < 400 || !exports.throwResponseError) resolve(response); else reject(new ResponseError(response)); }) .on('error', err => reject(new RequestError(err, instance)))); return instance; } exports.stream = stream; function defaults(options) { if (options.throwResponseError !== undefined) exports.throwResponseError = options.throwResponseError; request.defaults(options); } exports.defaults = defaults; function debug(value) { if (value === undefined) return request.debug; else request.debug = value; } exports.debug = debug; class RequestError extends Error { constructor(err, request) { super(err.message); this.request = request; this.innerError = err; } } exports.RequestError = RequestError; class Response { constructor(request, message, body) { this.request = request; this.message = message; this.body = body; } get charset() { return parseContentType(this.message.headers['content-type']).charset; } get content() { return this.body; } get contentLength() { if ('content-length' in this.message.headers) return parseInt(this.message.headers['content-length']); else if (typeof this.body === 'string') return this.body.length; } get contentType() { return parseContentType(this.message.headers['content-type']).contentType; } get cookies() { if (typeof this.request.options.jar === 'object') { var jar = this.request.options.jar; return jar.getCookies(this.request.options.uri); } } get headers() { return this.message.headers; } get httpVersion() { return this.message.httpVersion; } get lastModified() { return new Date(this.message.headers['last-modified']); } get method() { return this.message.method || this.message.request.method; } get server() { return this.message.headers['server']; } get statusCode() { return this.message.statusCode; } get statusMessage() { return this.message.statusMessage; } get uri() { return this.message.request.uri; } } exports.Response = Response; class ResponseError extends Error { constructor(response) { super(response.statusMessage); this.response = response; this.statusCode = response.statusCode; } } exports.ResponseError = ResponseError; function parseKeyValue(text) { var i = text.indexOf('='); return { key: i > 0 ? text.substring(0, i) : text, value: i > 0 ? text.substring(i + 1) : null }; } function parseContentType(text) { var list = text ? text.split('; ') : []; var tuple1 = list.length > 0 ? parseKeyValue(list[0]) : null; var tuple2 = list.length > 1 ? parseKeyValue(list[1]) : null; return { contentType: tuple1 ? tuple1.key : null, charset: tuple2 && tuple2.key.toLowerCase() === 'charset' ? tuple2.value : null }; } //# sourceMappingURL=index.js.map