UNPKG

playwright-fluent

Version:
63 lines (62 loc) 2.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getHarResponseFor = exports.getHarEntryFor = exports.defaultHarEntryParserOptions = exports.areUrlEquals = exports.extractQueryStringObjectFromHarQueryString = void 0; const url_1 = require("../url"); function extractQueryStringObjectFromHarQueryString(harQueryString) { const result = {}; harQueryString.forEach((keyValue) => { var _a; if (keyValue.value) { const params = new URLSearchParams(`${keyValue.name}=${keyValue.value}`); result[keyValue.name] = (_a = params.get(keyValue.name)) !== null && _a !== void 0 ? _a : keyValue.value; } }); return result; } exports.extractQueryStringObjectFromHarQueryString = extractQueryStringObjectFromHarQueryString; function areUrlEquals(url1, url2) { return (0, url_1.urlToPath)(url1) === (0, url_1.urlToPath)(url2); } exports.areUrlEquals = areUrlEquals; exports.defaultHarEntryParserOptions = { areUrlEquals, }; function getHarEntryFor(request, harData, options = exports.defaultHarEntryParserOptions) { const entryOptions = { ...exports.defaultHarEntryParserOptions, ...options, }; const httpMethod = request.method(); const url = request.url(); const entries = harData.log.entries .filter((entry) => entry.request.method === httpMethod) .filter((entry) => entryOptions.areUrlEquals(entry.request.url, url)) .filter((entry) => entry.response) .filter((entry) => entry.response.status >= 200 && entry.response.status < 300); const entriesWithSamePostData = entries.filter((entry) => { var _a, _b; return ((_a = entry.request.postData) === null || _a === void 0 ? void 0 : _a.text) === request.postData() || (request.postData() === null && ((_b = entry.request.postData) === null || _b === void 0 ? void 0 : _b.text) === undefined); }); switch (httpMethod) { case 'CONNECT': case 'GET': case 'HEAD': case 'OPTIONS': case 'TRACE': return entries.pop(); case 'DELETE': case 'PATCH': case 'POST': case 'PUT': return entriesWithSamePostData.pop(); default: throw new Error(`HAR-READER: the HTTP Method ${httpMethod} is not yet implemented`); } } exports.getHarEntryFor = getHarEntryFor; function getHarResponseFor(request, harData, options = exports.defaultHarEntryParserOptions) { const harEntry = getHarEntryFor(request, harData, options); return harEntry === null || harEntry === void 0 ? void 0 : harEntry.response; } exports.getHarResponseFor = getHarResponseFor;