aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-util
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-02-06 19:35:55 +0100
committerFlorian Dold <florian@dold.me>2024-02-06 19:35:55 +0100
commit6c496c070d47e26034a3e2dd6d14a1a9ea42b729 (patch)
tree7d9da9321c4d6875ef068cd56b810f58a5f03914 /packages/taler-util
parent963aef5366097bfd35647efc4d8b2ce04aa565dc (diff)
downloadwallet-core-6c496c070d47e26034a3e2dd6d14a1a9ea42b729.tar.xz
harness: do not follow redirects in certain tests
Diffstat (limited to 'packages/taler-util')
-rw-r--r--packages/taler-util/src/http-common.ts8
-rw-r--r--packages/taler-util/src/http-impl.node.ts5
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[] = [];