aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-util/src/http-client/challenger.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-util/src/http-client/challenger.ts')
-rw-r--r--packages/taler-util/src/http-client/challenger.ts18
1 files changed, 15 insertions, 3 deletions
diff --git a/packages/taler-util/src/http-client/challenger.ts b/packages/taler-util/src/http-client/challenger.ts
index 8d23ed273..aa530570d 100644
--- a/packages/taler-util/src/http-client/challenger.ts
+++ b/packages/taler-util/src/http-client/challenger.ts
@@ -1,6 +1,7 @@
import { HttpRequestLibrary, readTalerErrorResponse } from "../http-common.js";
import { HttpStatusCode } from "../http-status-codes.js";
import { createPlatformHttpLib } from "../http.js";
+import { TalerCoreBankCacheEviction } from "../index.node.js";
import { LibtoolVersion } from "../libtool-version.js";
import {
FailCasesByMethod,
@@ -22,24 +23,31 @@ import {
codecForChallengerTermsOfServiceResponse,
codecForInvalidPinResponse,
} from "./types.js";
-import { makeBearerTokenAuthHeader } from "./utils.js";
+import { CacheEvictor, makeBearerTokenAuthHeader, nullEvictor } from "./utils.js";
export type ChallengerResultByMethod<prop extends keyof ChallengerHttpClient> =
ResultByMethod<ChallengerHttpClient, prop>;
export type ChallengerErrorsByMethod<prop extends keyof ChallengerHttpClient> =
FailCasesByMethod<ChallengerHttpClient, prop>;
+export enum ChallengerCacheEviction {
+ CREATE_CHALLENGE,
+}
+
/**
*/
export class ChallengerHttpClient {
httpLib: HttpRequestLibrary;
+ cacheEvictor: CacheEvictor<ChallengerCacheEviction>;
public readonly PROTOCOL_VERSION = "1:0:0";
constructor(
readonly baseUrl: string,
httpClient?: HttpRequestLibrary,
- ) {
+ cacheEvictor?: CacheEvictor<ChallengerCacheEviction>,
+ ) {
this.httpLib = httpClient ?? createPlatformHttpLib();
+ this.cacheEvictor = cacheEvictor ?? nullEvictor;
}
isCompatible(version: string): boolean {
@@ -146,8 +154,12 @@ export class ChallengerHttpClient {
redirect: "manual",
});
switch (resp.status) {
- case HttpStatusCode.Ok:
+ case HttpStatusCode.Ok: {
+ await this.cacheEvictor.notifySuccess(
+ ChallengerCacheEviction.CREATE_CHALLENGE,
+ );
return opSuccessFromHttp(resp, codecForChallengeCreateResponse());
+ }
case HttpStatusCode.Found:
const redirect = resp.headers.get("Location")!;
return opFixedSuccess<RedirectResult>({