Unverified Commit f22e14d6 authored by Hong Minhee's avatar Hong Minhee
Browse files

Refactor redirect handling to reduce code duplication



Extracted duplicate Request creation logic into a helper function
createRedirectRequest() to improve code maintainability. This addresses
the code review feedback about reducing duplication between the two
redirect handling paths in doubleKnock().

Co-Authored-By: default avatarClaude <noreply@anthropic.com>
parent ffcdecd8
Loading
Loading
Loading
Loading
+29 −28
Original line number Diff line number Diff line
@@ -1221,6 +1221,33 @@ export interface DoubleKnockOptions {
  tracerProvider?: TracerProvider;
}

/**
 * Helper function to create a new Request for redirect handling.
 * @param request The original request.
 * @param location The redirect location.
 * @param body The request body as ArrayBuffer or undefined.
 * @returns A new Request object for the redirect.
 */
function createRedirectRequest(
  request: Request,
  location: string,
  body: ArrayBuffer | undefined,
): Request {
  return new Request(location, {
    method: request.method,
    headers: request.headers,
    body,
    redirect: "manual",
    signal: request.signal,
    mode: request.mode,
    credentials: request.credentials,
    referrer: request.referrer,
    referrerPolicy: request.referrerPolicy,
    integrity: request.integrity,
    keepalive: request.keepalive,
  });
}

/**
 * Performs a double-knock request to the given URL.  For the details of
 * double-knocking, see
@@ -1264,19 +1291,7 @@ export async function doubleKnock(
      ? await request.clone().arrayBuffer()
      : undefined;
    return doubleKnock(
      new Request(location, {
        method: request.method,
        headers: request.headers,
        body,
        redirect: "manual",
        signal: request.signal,
        mode: request.mode,
        credentials: request.credentials,
        referrer: request.referrer,
        referrerPolicy: request.referrerPolicy,
        integrity: request.integrity,
        keepalive: request.keepalive,
      }),
      createRedirectRequest(request, location, body),
      identity,
      options,
    );
@@ -1330,21 +1345,7 @@ export async function doubleKnock(
        ? await request.clone().arrayBuffer()
        : undefined;
      return doubleKnock(
        new Request(location, {
          // Explicitly copy all Request properties instead of using destructuring
          // to ensure proper Request constructor behavior and preserve all properties
          method: request.method,
          headers: request.headers,
          body,
          redirect: "manual",
          signal: request.signal,
          mode: request.mode,
          credentials: request.credentials,
          referrer: request.referrer,
          referrerPolicy: request.referrerPolicy,
          integrity: request.integrity,
          keepalive: request.keepalive,
        }),
        createRedirectRequest(request, location, body),
        identity,
        options,
      );