diff options
Diffstat (limited to 'packages/taler-util')
-rw-r--r-- | packages/taler-util/src/http-client/bank-core.ts | 2 | ||||
-rw-r--r-- | packages/taler-util/src/http-client/merchant.ts | 54 | ||||
-rw-r--r-- | packages/taler-util/src/index.ts | 1 |
3 files changed, 35 insertions, 22 deletions
diff --git a/packages/taler-util/src/http-client/bank-core.ts b/packages/taler-util/src/http-client/bank-core.ts index c02bf1ec9..b544d56fe 100644 --- a/packages/taler-util/src/http-client/bank-core.ts +++ b/packages/taler-util/src/http-client/bank-core.ts @@ -76,7 +76,7 @@ export type TalerCoreBankErrorsByMethod< > = FailCasesByMethod<TalerCoreBankHttpClient, prop>; export enum TalerCoreBankCacheEviction { - DELELE_ACCOUNT, + DELETE_ACCOUNT, CREATE_ACCOUNT, UPDATE_ACCOUNT, UPDATE_PASSWORD, diff --git a/packages/taler-util/src/http-client/merchant.ts b/packages/taler-util/src/http-client/merchant.ts index 886844dba..7407cce66 100644 --- a/packages/taler-util/src/http-client/merchant.ts +++ b/packages/taler-util/src/http-client/merchant.ts @@ -67,9 +67,12 @@ import { nullEvictor, } from "./utils.js"; -export enum TalerMerchantCacheEviction { +export enum TalerMerchantInstanceCacheEviction { CREATE_ORDER, } +export enum TalerMerchantManagementCacheEviction { + CREATE_INSTANCE, +} /** * Protocol version spoken with the core bank. * @@ -83,12 +86,12 @@ export class TalerMerchantInstanceHttpClient { public readonly PROTOCOL_VERSION = "10:0:6"; readonly httpLib: HttpRequestLibrary; - readonly cacheEvictor: CacheEvictor<TalerMerchantCacheEviction>; + readonly cacheEvictor: CacheEvictor<TalerMerchantInstanceCacheEviction>; constructor( readonly baseUrl: string, httpClient?: HttpRequestLibrary, - cacheEvictor?: CacheEvictor<TalerMerchantCacheEviction>, + cacheEvictor?: CacheEvictor<TalerMerchantInstanceCacheEviction>, ) { this.httpLib = httpClient ?? createPlatformHttpLib(); this.cacheEvictor = cacheEvictor ?? nullEvictor; @@ -354,16 +357,6 @@ export class TalerMerchantInstanceHttpClient { } /** - * Get the auth api against the current instance - * - * https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCE]-private-token - * https://docs.taler.net/core/api-merchant.html#delete-[-instances-$INSTANCE]-private-token - */ - getAuthenticationAPI(): URL { - return new URL(`/`, this.baseUrl); - } - - /** * https://docs.taler.net/core/api-merchant.html#patch-[-instances-$INSTANCE]-private */ async updateCurrentInstance( @@ -731,13 +724,15 @@ export class TalerMerchantInstanceHttpClient { method: "POST", body, }); - return TalerMerchantInstanceHttpClient.procesOrderCreationResponse(resp); + return this.procesOrderCreationResponse(resp) } - private static async procesOrderCreationResponse(resp: HttpResponse) { + private async procesOrderCreationResponse(resp: HttpResponse) { switch (resp.status) { - case HttpStatusCode.Ok: - return opSuccessFromHttp(resp, codecForPostOrderResponse()); + case HttpStatusCode.Ok: { + this.cacheEvictor.notifySuccess(TalerMerchantInstanceCacheEviction.CREATE_ORDER) + return opSuccessFromHttp(resp, codecForPostOrderResponse()) + } case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.Conflict: @@ -1257,7 +1252,7 @@ export class TalerMerchantInstanceHttpClient { body, }); - return TalerMerchantInstanceHttpClient.procesOrderCreationResponse(resp); + return this.procesOrderCreationResponse(resp) } // @@ -1475,18 +1470,32 @@ export class TalerMerchantInstanceHttpClient { return opUnknownFailure(resp, await resp.text()); } } + + /** + * Get the auth api against the current instance + * + * https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCE]-private-token + * https://docs.taler.net/core/api-merchant.html#delete-[-instances-$INSTANCE]-private-token + */ + getAuthenticationAPI(): URL { + return new URL(`private/`, this.baseUrl); + } + } export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttpClient { + readonly cacheManagementEvictor: CacheEvictor<TalerMerchantManagementCacheEviction>; constructor( readonly baseUrl: string, httpClient?: HttpRequestLibrary, - cacheEvictor?: CacheEvictor<TalerMerchantCacheEviction>, + cacheManagementEvictor?: CacheEvictor<TalerMerchantManagementCacheEviction>, + cacheEvictor?: CacheEvictor<TalerMerchantInstanceCacheEviction>, ) { super(baseUrl, httpClient, cacheEvictor); + this.cacheManagementEvictor = cacheManagementEvictor ?? nullEvictor; } - getSubInstanceApi(instanceId: string) { + getSubInstanceAPI(instanceId: string) { return new URL(`instances/${instanceId}`, this.baseUrl); } @@ -1505,9 +1514,12 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp body, }); + switch (resp.status) { - case HttpStatusCode.NoContent: + case HttpStatusCode.NoContent: { + this.cacheManagementEvictor.notifySuccess(TalerMerchantManagementCacheEviction.CREATE_INSTANCE) return opEmptySuccess(resp); + } case HttpStatusCode.Conflict: return opKnownHttpFailure(resp.status, resp); default: diff --git a/packages/taler-util/src/index.ts b/packages/taler-util/src/index.ts index 6b9a4ae2f..9bd4834d2 100644 --- a/packages/taler-util/src/index.ts +++ b/packages/taler-util/src/index.ts @@ -21,6 +21,7 @@ export * from "./helpers.js"; export * from "./http-client/bank-conversion.js"; export * from "./http-client/authentication.js"; export * from "./http-client/bank-core.js"; +export * from "./http-client/merchant.js"; export * from "./http-client/bank-integration.js"; export * from "./http-client/bank-revenue.js"; export * from "./http-client/bank-wire.js"; |