| 30 | }; |
| 31 | |
| 32 | function createLeaf({ harRequest, responseBody, options }: Params): Leaf { |
| 33 | const { enableMoreInfo } = options; |
| 34 | const authentication = determineAuthFromHAR(harRequest); |
| 35 | harRequest.request.headers = filterIgnoreHeaders(harRequest.request.headers); |
| 36 | harRequest.response.headers = filterIgnoreHeaders( |
| 37 | harRequest.response.headers, |
| 38 | ); |
| 39 | const method = harRequest.request.method; |
| 40 | const statusCode = harRequest.response.status.toString(); |
| 41 | const requestMime = harRequest.request.postData?.mimeType; |
| 42 | const responseMime = harRequest.response.content.mimeType; |
| 43 | const requestBody = parseRequestBody(harRequest); |
| 44 | const requestHeaders = entriesToJSONType(harRequest.request.headers); |
| 45 | const responseHeaders = entriesToJSONType(harRequest.response.headers); |
| 46 | const queryParameters = entriesToJSONType(harRequest.request.queryString); |
| 47 | const pathname = decodeUriComponent(new URL(harRequest.request.url).pathname); |
| 48 | const leafPart: Leaf = { |
| 49 | ...(authentication && { authentication }), |
| 50 | pathname, |
| 51 | methods: { |
| 52 | [method]: { |
| 53 | ...(requestMime && { |
| 54 | request: { |
| 55 | [requestMime]: { |
| 56 | body: createSchemaElseUndefined(requestBody), |
| 57 | ...(enableMoreInfo && { mostRecent: requestBody }), |
| 58 | }, |
| 59 | }, |
| 60 | }), |
| 61 | requestHeaders: createSchemaElseUndefined(requestHeaders), |
| 62 | response: { |
| 63 | [statusCode]: { |
| 64 | [responseMime]: { |
| 65 | body: createSchemaElseUndefined(responseBody), |
| 66 | ...(enableMoreInfo && { mostRecent: responseBody }), |
| 67 | }, |
| 68 | }, |
| 69 | }, |
| 70 | responseHeaders: createSchemaElseUndefined(responseHeaders), |
| 71 | queryParameters: createSchemaElseUndefined(queryParameters), |
| 72 | }, |
| 73 | }, |
| 74 | }; |
| 75 | return leafPart; |
| 76 | } |
| 77 | |
| 78 | export default createLeaf; |