diff options
Diffstat (limited to 'packages/taler-util/src/http-client/bank-conversion.ts')
-rw-r--r-- | packages/taler-util/src/http-client/bank-conversion.ts | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/packages/taler-util/src/http-client/bank-conversion.ts b/packages/taler-util/src/http-client/bank-conversion.ts index 91d07b11b..ea247ccfc 100644 --- a/packages/taler-util/src/http-client/bank-conversion.ts +++ b/packages/taler-util/src/http-client/bank-conversion.ts @@ -39,7 +39,7 @@ import { codecForCashoutConversionResponse, codecForConversionBankConfig, } from "./types.js"; -import { makeBearerTokenAuthHeader } from "./utils.js"; +import { CacheEvictor, makeBearerTokenAuthHeader, nullEvictor } from "./utils.js"; export type TalerBankConversionResultByMethod< prop extends keyof TalerBankConversionHttpClient, @@ -48,6 +48,10 @@ export type TalerBankConversionErrorsByMethod< prop extends keyof TalerBankConversionHttpClient, > = FailCasesByMethod<TalerBankConversionHttpClient, prop>; +export enum TalerBankConversionCacheEviction { + UPDATE_RATE, +} + /** * The API is used by the wallets. */ @@ -55,12 +59,15 @@ export class TalerBankConversionHttpClient { public readonly PROTOCOL_VERSION = "0:0:0"; httpLib: HttpRequestLibrary; + cacheEvictor: CacheEvictor<TalerBankConversionCacheEviction>; constructor( readonly baseUrl: string, httpClient?: HttpRequestLibrary, + cacheEvictor?: CacheEvictor<TalerBankConversionCacheEviction>, ) { this.httpLib = httpClient ?? createPlatformHttpLib(); + this.cacheEvictor = cacheEvictor ?? nullEvictor; } isCompatible(version: string): boolean { @@ -195,8 +202,10 @@ export class TalerBankConversionHttpClient { body, }); switch (resp.status) { - case HttpStatusCode.NoContent: + case HttpStatusCode.NoContent: { + this.cacheEvictor.notifySuccess(TalerBankConversionCacheEviction.UPDATE_RATE); return opEmptySuccess(resp); + } case HttpStatusCode.Unauthorized: return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.NotImplemented: |