"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.sendRequestThroughAPI = exports.send = void 0; const create_request_options_1 = require("./create-request-options"); const process_response_data_1 = require("./process-response-data"); const http_headers_1 = __importDefault(require("../../utils/http-headers")); const runtime_1 = require("../../errors/runtime"); const lodash_1 = require("lodash"); const types_1 = require("../../errors/types"); const testcafe_hammerhead_1 = require("testcafe-hammerhead"); async function send(requestOptions, rawResponse) { const request = new testcafe_hammerhead_1.DestinationRequest(requestOptions); const dataWaiter = new Promise(resolve => { request.on('response', (res) => resolve(res)); request.on('error', (err) => resolve(err.message)); request.on('fatalError', (message) => resolve(message)); }); const data = await dataWaiter; if (typeof data === 'string') return data; const body = await (0, process_response_data_1.processResponseData)(data, rawResponse); return { status: data.statusCode, statusText: data.statusMessage, headers: data.headers, body: body, }; } exports.send = send; async function sendRequestThroughAPI(testRun, options, callsite) { const currentPageUrl = new URL(await testRun.getCurrentUrl()); const requestOptions = await (0, create_request_options_1.createRequestOptions)(currentPageUrl, testRun, options, callsite); const data = await send(requestOptions, options.rawResponse); if (typeof data === 'string') throw new runtime_1.RequestRuntimeError(callsite, types_1.RUNTIME_ERRORS.requestRuntimeError, data.replace(/<.*?>/g, '')); const setCookie = data.headers[http_headers_1.default.setCookie]; const sameOrigin = !currentPageUrl.host || (0, testcafe_hammerhead_1.sameOriginCheck)(currentPageUrl.href, requestOptions.url); if (setCookie && (sameOrigin || options.withCredentials)) testRun.session.cookies.copySyncCookies((0, lodash_1.castArray)(setCookie).join(';'), currentPageUrl.href); return data; } exports.sendRequestThroughAPI = sendRequestThroughAPI; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0LXJ1bi9yZXF1ZXN0L3NlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EscUVBQWdFO0FBQ2hFLG1FQUE4RDtBQUM5RCw0RUFBb0Q7QUFDcEQsa0RBQTJEO0FBRTNELG1DQUFtQztBQUNuQyw4Q0FBb0Q7QUFFcEQsNkRBSTZCO0FBSXRCLEtBQUssVUFBVSxJQUFJLENBQUUsY0FBOEIsRUFBRSxXQUFxQjtJQUM3RSxNQUFNLE9BQU8sR0FBRyxJQUFJLHdDQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRXZELE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxDQUFpQyxPQUFPLENBQUMsRUFBRTtRQUNyRSxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQTBCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBVSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDMUQsT0FBTyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxJQUFJLEdBQUcsTUFBTSxVQUFVLENBQUM7SUFFOUIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBRWhCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSwyQ0FBbUIsRUFBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFMUQsT0FBTztRQUNILE1BQU0sRUFBTSxJQUFJLENBQUMsVUFBVTtRQUMzQixVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWE7UUFDOUIsT0FBTyxFQUFLLElBQUksQ0FBQyxPQUFPO1FBQ3hCLElBQUksRUFBUSxJQUFJO0tBQ25CLENBQUM7QUFDTixDQUFDO0FBdEJELG9CQXNCQztBQUVNLEtBQUssVUFBVSxxQkFBcUIsQ0FBRSxPQUFnQixFQUFFLE9BQStCLEVBQUUsUUFBK0I7SUFDM0gsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUU5RCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUEsNkNBQW9CLEVBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFOUYsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU3RCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDeEIsTUFBTSxJQUFJLDZCQUFtQixDQUFDLFFBQVEsRUFBRSxzQkFBYyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFNUcsTUFBTSxTQUFTLEdBQUssSUFBSSxDQUFDLE9BQStCLENBQUMsc0JBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRixNQUFNLFVBQVUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksSUFBQSxxQ0FBZSxFQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXBHLElBQUksU0FBUyxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDcEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUEsa0JBQVMsRUFBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWpHLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFqQkQsc0RBaUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IHsgSW5jb21pbmdIdHRwSGVhZGVycywgSW5jb21pbmdNZXNzYWdlIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgeyBFeHRlcm5hbFJlcXVlc3RPcHRpb25zLCBSZXNwb25zZU9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY3JlYXRlUmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuL2NyZWF0ZS1yZXF1ZXN0LW9wdGlvbnMnO1xuaW1wb3J0IHsgcHJvY2Vzc1Jlc3BvbnNlRGF0YSB9IGZyb20gJy4vcHJvY2Vzcy1yZXNwb25zZS1kYXRhJztcbmltcG9ydCBIVFRQX0hFQURFUlMgZnJvbSAnLi4vLi4vdXRpbHMvaHR0cC1oZWFkZXJzJztcbmltcG9ydCB7IFJlcXVlc3RSdW50aW1lRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBDYWxsc2l0ZVJlY29yZCB9IGZyb20gJ2NhbGxzaXRlLXJlY29yZCc7XG5pbXBvcnQgeyBjYXN0QXJyYXkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi8uLi9lcnJvcnMvdHlwZXMnO1xuXG5pbXBvcnQge1xuICAgIERlc3RpbmF0aW9uUmVxdWVzdCxcbiAgICBzYW1lT3JpZ2luQ2hlY2ssXG4gICAgUmVxdWVzdE9wdGlvbnMsXG59IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuXG50eXBlIFN0cmljdEluY29taW5nTWVzc2FnZSA9IEluY29taW5nTWVzc2FnZSAmIHsgc3RhdHVzQ29kZTogbnVtYmVyOyBzdGF0dXNNZXNzYWdlOiBzdHJpbmcgfTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmQgKHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0T3B0aW9ucywgcmF3UmVzcG9uc2U/OiBib29sZWFuKTogUHJvbWlzZTxSZXNwb25zZU9wdGlvbnMgfCBzdHJpbmc+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IERlc3RpbmF0aW9uUmVxdWVzdChyZXF1ZXN0T3B0aW9ucyk7XG5cbiAgICBjb25zdCBkYXRhV2FpdGVyID0gbmV3IFByb21pc2U8U3RyaWN0SW5jb21pbmdNZXNzYWdlIHwgc3RyaW5nPihyZXNvbHZlID0+IHtcbiAgICAgICAgcmVxdWVzdC5vbigncmVzcG9uc2UnLCAocmVzOiBTdHJpY3RJbmNvbWluZ01lc3NhZ2UpID0+IHJlc29sdmUocmVzKSk7XG4gICAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgKGVycjogRXJyb3IpID0+IHJlc29sdmUoZXJyLm1lc3NhZ2UpKTtcbiAgICAgICAgcmVxdWVzdC5vbignZmF0YWxFcnJvcicsIChtZXNzYWdlOiBzdHJpbmcpID0+IHJlc29sdmUobWVzc2FnZSkpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGRhdGFXYWl0ZXI7XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKVxuICAgICAgICByZXR1cm4gZGF0YTtcblxuICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBwcm9jZXNzUmVzcG9uc2VEYXRhKGRhdGEsIHJhd1Jlc3BvbnNlKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogICAgIGRhdGEuc3RhdHVzQ29kZSxcbiAgICAgICAgc3RhdHVzVGV4dDogZGF0YS5zdGF0dXNNZXNzYWdlLFxuICAgICAgICBoZWFkZXJzOiAgICBkYXRhLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6ICAgICAgIGJvZHksXG4gICAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRSZXF1ZXN0VGhyb3VnaEFQSSAodGVzdFJ1bjogVGVzdFJ1biwgb3B0aW9uczogRXh0ZXJuYWxSZXF1ZXN0T3B0aW9ucywgY2FsbHNpdGU6IENhbGxzaXRlUmVjb3JkIHwgbnVsbCk6IFByb21pc2U8UmVzcG9uc2VPcHRpb25zPiB7XG4gICAgY29uc3QgY3VycmVudFBhZ2VVcmwgPSBuZXcgVVJMKGF3YWl0IHRlc3RSdW4uZ2V0Q3VycmVudFVybCgpKTtcblxuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0gYXdhaXQgY3JlYXRlUmVxdWVzdE9wdGlvbnMoY3VycmVudFBhZ2VVcmwsIHRlc3RSdW4sIG9wdGlvbnMsIGNhbGxzaXRlKTtcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBzZW5kKHJlcXVlc3RPcHRpb25zLCBvcHRpb25zLnJhd1Jlc3BvbnNlKTtcblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpXG4gICAgICAgIHRocm93IG5ldyBSZXF1ZXN0UnVudGltZUVycm9yKGNhbGxzaXRlLCBSVU5USU1FX0VSUk9SUy5yZXF1ZXN0UnVudGltZUVycm9yLCBkYXRhLnJlcGxhY2UoLzwuKj8+L2csICcnKSk7XG5cbiAgICBjb25zdCBzZXRDb29raWUgID0gKGRhdGEuaGVhZGVycyBhcyBJbmNvbWluZ0h0dHBIZWFkZXJzKVtIVFRQX0hFQURFUlMuc2V0Q29va2llXTtcbiAgICBjb25zdCBzYW1lT3JpZ2luID0gIWN1cnJlbnRQYWdlVXJsLmhvc3QgfHwgc2FtZU9yaWdpbkNoZWNrKGN1cnJlbnRQYWdlVXJsLmhyZWYsIHJlcXVlc3RPcHRpb25zLnVybCk7XG5cbiAgICBpZiAoc2V0Q29va2llICYmIChzYW1lT3JpZ2luIHx8IG9wdGlvbnMud2l0aENyZWRlbnRpYWxzKSApXG4gICAgICAgIHRlc3RSdW4uc2Vzc2lvbi5jb29raWVzLmNvcHlTeW5jQ29va2llcyhjYXN0QXJyYXkoc2V0Q29va2llKS5qb2luKCc7JyksIGN1cnJlbnRQYWdlVXJsLmhyZWYpO1xuXG4gICAgcmV0dXJuIGRhdGE7XG59XG4iXX0=