UNPKG

flagpole

Version:

Simple and fast DOM integration, headless or headful browser, and REST API testing framework.

63 lines 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fetchImageWithNeedle = void 0; const http_response_1 = require("../http/http-response"); const needle = require("needle"); const needle_1 = require("../http/needle"); const image_probe_1 = require("@zerodeps/image-probe"); const fromProbeImage = (response, cookies) => { const json = Object.assign(Object.assign({}, response.imageData), { length: response.length, url: response.url, mime: response.imageData.mimeType, }); return new http_response_1.HttpResponse({ headers: response.headers, status: [response.statusCode, ""], jsonBody: json, cookies: cookies || {}, url: response.url, }); }; const fetchImageWithNeedle = (request, opts) => { return new Promise((resolve, reject) => { const stream = needle.request("get", request.uri || "/", null, needle_1.getNeedleOptions(request)); if (opts === null || opts === void 0 ? void 0 : opts.redirect) { stream.on("redirect", opts.redirect); } const response = { statusCode: 0, length: 0, url: request.uri || "", headers: {}, imageData: { width: 0, height: 0, type: "", mimeType: "", }, }; stream .on("header", (statusCode, headers) => { response.statusCode = statusCode; response.headers = headers; response.length = Number(headers["content-length"]); response.imageData.mimeType = headers["content-type"]; }) .on("readable", () => { const chunk = stream.read(512); if (chunk) { response.imageData = image_probe_1.ImageProbe.fromBuffer(chunk) || response.imageData; } stream.pause(); try { stream.destroy(); } catch (_a) { } resolve(fromProbeImage(response)); }); }); }; exports.fetchImageWithNeedle = fetchImageWithNeedle; //# sourceMappingURL=image-adapter.js.map