diff options
Diffstat (limited to 'packages/taler-util/src')
-rw-r--r-- | packages/taler-util/src/http-client/challenger.ts | 18 |
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>({ |