flagpole
Version:
Simple and fast DOM integration, headless or headful browser, and REST API testing framework.
63 lines • 2.22 kB
JavaScript
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
;