From df3ab8bce431ba1c3c18c5e4869af355f7b5c958 Mon Sep 17 00:00:00 2001 From: RuntimeTerror10 Date: Thu, 12 Sep 2024 09:27:21 +0530 Subject: [PATCH 1/2] ENGG-2273: Add support for capturing headers in sessions --- .../session-recorder/SessionRecorder.ts | 47 +++++++++++++------ src/modules/session-recorder/types.ts | 2 + 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/modules/session-recorder/SessionRecorder.ts b/src/modules/session-recorder/SessionRecorder.ts index 48e6db8..fd87838 100644 --- a/src/modules/session-recorder/SessionRecorder.ts +++ b/src/modules/session-recorder/SessionRecorder.ts @@ -34,6 +34,7 @@ export interface SessionRecorderOptions { maxPayloadSize?: number; // in Bytes localStorage?: boolean; sessionStorage?: boolean; + enableHeadersCapture?: boolean; } export class SessionRecorder { @@ -192,21 +193,37 @@ export class SessionRecorder { Network.intercept( /.*/, - ({ method, url, requestData, responseJSON, responseURL, contentType, status, statusText, responseTime }) => { - captureEventFn( - this.#filterOutLargeNetworkValues({ - timestamp: Date.now(), - method, - url, - requestData, - response: responseJSON, - responseURL, - contentType, - status, - statusText, - responseTime, - }), - ); + ({ + method, + url, + requestData, + responseJSON, + responseURL, + contentType, + status, + statusText, + responseTime, + requestHeaders, + responseHeaders, + }) => { + const eventData: NetworkEventData = { + timestamp: Date.now(), + method, + url, + requestData, + response: responseJSON, + responseURL, + contentType, + status, + statusText, + responseTime, + }; + if (this.#options.enableHeadersCapture) { + eventData.requestHeaders = requestHeaders; + eventData.responseHeaders = responseHeaders; + } + + captureEventFn(this.#filterOutLargeNetworkValues(eventData)); }, ); } diff --git a/src/modules/session-recorder/types.ts b/src/modules/session-recorder/types.ts index 8c98b7c..5af82bc 100644 --- a/src/modules/session-recorder/types.ts +++ b/src/modules/session-recorder/types.ts @@ -61,6 +61,8 @@ export type NetworkEventData = CommonEventData & { statusText?: string; responseTime?: number; errors?: RQNetworkEventErrorCodes[]; + requestHeaders?: Record; + responseHeaders?: Record; }; export interface RQSessionEventDataType { From b121e7d0b4dfa7565a35fbd303f83d917e3de0bb Mon Sep 17 00:00:00 2001 From: RuntimeTerror10 Date: Tue, 17 Sep 2024 08:00:31 +0530 Subject: [PATCH 2/2] fix --- src/modules/session-recorder/SessionRecorder.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/session-recorder/SessionRecorder.ts b/src/modules/session-recorder/SessionRecorder.ts index fd87838..57a318a 100644 --- a/src/modules/session-recorder/SessionRecorder.ts +++ b/src/modules/session-recorder/SessionRecorder.ts @@ -34,7 +34,7 @@ export interface SessionRecorderOptions { maxPayloadSize?: number; // in Bytes localStorage?: boolean; sessionStorage?: boolean; - enableHeadersCapture?: boolean; + captureHeaders?: boolean; } export class SessionRecorder { @@ -218,7 +218,7 @@ export class SessionRecorder { statusText, responseTime, }; - if (this.#options.enableHeadersCapture) { + if (this.#options.captureHeaders) { eventData.requestHeaders = requestHeaders; eventData.responseHeaders = responseHeaders; }