"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.httpRequest = void 0; const property_provider_1 = require("@smithy/property-provider"); const buffer_1 = require("buffer"); const http_1 = require("http"); function httpRequest(options) { return new Promise((resolve, reject) => { var _a; const req = (0, http_1.request)({ method: "GET", ...options, hostname: (_a = options.hostname) === null || _a === void 0 ? void 0 : _a.replace(/^\[(.+)\]$/, "$1"), }); req.on("error", (err) => { reject(Object.assign(new property_provider_1.ProviderError("Unable to connect to instance metadata service"), err)); req.destroy(); }); req.on("timeout", () => { reject(new property_provider_1.ProviderError("TimeoutError from instance metadata service")); req.destroy(); }); req.on("response", (res) => { const { statusCode = 400 } = res; if (statusCode < 200 || 300 <= statusCode) { reject(Object.assign(new property_provider_1.ProviderError("Error response received from instance metadata service"), { statusCode })); req.destroy(); } const chunks = []; res.on("data", (chunk) => { chunks.push(chunk); }); res.on("end", () => { resolve(buffer_1.Buffer.concat(chunks)); req.destroy(); }); }); req.end(); }); } exports.httpRequest = httpRequest;