diff options
Diffstat (limited to 'packages/taler-util')
-rw-r--r-- | packages/taler-util/src/http-common.ts | 8 | ||||
-rw-r--r-- | packages/taler-util/src/http-impl.node.ts | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/packages/taler-util/src/http-common.ts b/packages/taler-util/src/http-common.ts index 705881801..3973e66fb 100644 --- a/packages/taler-util/src/http-common.ts +++ b/packages/taler-util/src/http-common.ts @@ -27,7 +27,7 @@ import { } from "./index.js"; import { Logger } from "./logging.js"; import { TalerErrorCode } from "./taler-error-codes.js"; -import { Duration, AbsoluteTime } from "./time.js"; +import { AbsoluteTime, Duration } from "./time.js"; import { TalerErrorDetail } from "./wallet-types.js"; const textEncoder = new TextEncoder(); @@ -65,6 +65,12 @@ export interface HttpRequestOptions { cancellationToken?: CancellationToken; body?: string | ArrayBuffer | object; + + /** + * How to handle redirects. + * Same semantics as WHATWG fetch. + */ + redirect?: "follow" | "error" | "manual"; } /** diff --git a/packages/taler-util/src/http-impl.node.ts b/packages/taler-util/src/http-impl.node.ts index b9c007b35..8ca2deecd 100644 --- a/packages/taler-util/src/http-impl.node.ts +++ b/packages/taler-util/src/http-impl.node.ts @@ -21,7 +21,7 @@ */ import * as net from "node:net"; import type { ClientRequest, IncomingMessage } from "node:http"; -import { RedirectableRequest, http, https } from "follow-redirects"; +import { FollowOptions, RedirectableRequest, http, https } from "follow-redirects"; import { RequestOptions } from "node:http"; import { TalerError } from "./errors.js"; import { encodeBody, getDefaultHeaders, HttpLibArgs } from "./http-common.js"; @@ -141,7 +141,7 @@ export class HttpLibImpl implements HttpRequestLibrary { throw Error(`unsupported protocol (${parsedUrl.protocol})`); } - const options: RequestOptions = { + const options: RequestOptions & FollowOptions<RequestOptions> = { protocol, port: parsedUrl.port, host: parsedUrl.hostname, @@ -149,6 +149,7 @@ export class HttpLibImpl implements HttpRequestLibrary { path, headers: requestHeadersMap, timeout: timeoutMs, + followRedirects: opt?.redirect !== "manual", }; const chunks: Uint8Array[] = []; |