| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.HttpClient = void 0;
- const http_1 = __importDefault(require("http"));
- const https_1 = __importDefault(require("https"));
- const url_1 = __importDefault(require("url"));
- const base_js_1 = require("./base.js");
- const utils_js_1 = require("../../utils.js");
- class HttpResponse extends base_js_1.BaseResponse {
- /**
- * BaseResponse facade for node HTTP/HTTPS API Response
- * @param {http.ServerResponse} response
- */
- constructor(response, dataPromise) {
- super();
- this.response = response;
- this.dataPromise = dataPromise;
- }
- get status() {
- return this.response.statusCode;
- }
- getHeader(name) {
- return this.response.headers[name];
- }
- async getData() {
- const data = await this.dataPromise;
- return data;
- }
- }
- class HttpClient extends base_js_1.BaseClient {
- constructor(url) {
- super(url);
- this.parsedUrl = url_1.default.parse(this.url);
- this.httpApi = (this.parsedUrl.protocol === 'http:' ? http_1.default : https_1.default);
- }
- constructRequest(headers, signal) {
- return new Promise((resolve, reject) => {
- const request = this.httpApi.get({
- ...this.parsedUrl,
- headers,
- }, (response) => {
- const dataPromise = new Promise((resolveData) => {
- const chunks = [];
- // collect chunks
- response.on('data', (chunk) => {
- chunks.push(chunk);
- });
- // concatenate all chunks and resolve the promise with the resulting buffer
- response.on('end', () => {
- const data = Buffer.concat(chunks).buffer;
- resolveData(data);
- });
- response.on('error', reject);
- });
- resolve(new HttpResponse(response, dataPromise));
- });
- request.on('error', reject);
- if (signal) {
- if (signal.aborted) {
- request.destroy(new utils_js_1.AbortError('Request aborted'));
- }
- signal.addEventListener('abort', () => request.destroy(new utils_js_1.AbortError('Request aborted')));
- }
- });
- }
- async request({ headers, signal } = {}) {
- const response = await this.constructRequest(headers, signal);
- return response;
- }
- }
- exports.HttpClient = HttpClient;
- //# sourceMappingURL=http.js.map
|