From 0e79a79e6b9f159b3aebc39f2e278f062c4d4410 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 30 Jan 2024 15:05:01 +0100 Subject: formatting, comments, always return httpResp in OperationResult --- .../taler-util/src/http-client/bank-integration.ts | 131 +++++++++++++++------ 1 file changed, 92 insertions(+), 39 deletions(-) (limited to 'packages/taler-util/src/http-client/bank-integration.ts') diff --git a/packages/taler-util/src/http-client/bank-integration.ts b/packages/taler-util/src/http-client/bank-integration.ts index 2264b65bf..938249daf 100644 --- a/packages/taler-util/src/http-client/bank-integration.ts +++ b/packages/taler-util/src/http-client/bank-integration.ts @@ -1,8 +1,32 @@ -import { HttpRequestLibrary, readSuccessResponseJsonOrThrow } from "../http-common.js"; +/* + This file is part of GNU Taler + (C) 2022-2024 Taler Systems S.A. + + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see + */ + +import { HttpRequestLibrary } from "../http-common.js"; import { HttpStatusCode } from "../http-status-codes.js"; import { createPlatformHttpLib } from "../http.js"; import { LibtoolVersion } from "../libtool-version.js"; -import { FailCasesByMethod, ResultByMethod, opEmptySuccess, opKnownHttpFailure, opKnownTalerFailure, opSuccess, opUnknownFailure } from "../operation.js"; +import { + FailCasesByMethod, + ResultByMethod, + opEmptySuccess, + opKnownHttpFailure, + opKnownTalerFailure, + opSuccess, + opUnknownFailure, +} from "../operation.js"; import { TalerErrorCode } from "../taler-error-codes.js"; import { codecForTalerErrorDetail } from "../wallet-types.js"; import { @@ -11,12 +35,16 @@ import { WithdrawalOperationStatus, codecForBankWithdrawalOperationPostResponse, codecForBankWithdrawalOperationStatus, - codecForIntegrationBankConfig + codecForIntegrationBankConfig, } from "./types.js"; import { addLongPollingParam } from "./utils.js"; -export type TalerBankIntegrationResultByMethod = ResultByMethod -export type TalerBankIntegrationErrorsByMethod = FailCasesByMethod +export type TalerBankIntegrationResultByMethod< + prop extends keyof TalerBankIntegrationHttpClient, +> = ResultByMethod; +export type TalerBankIntegrationErrorsByMethod< + prop extends keyof TalerBankIntegrationHttpClient, +> = FailCasesByMethod; /** * The API is used by the wallets. @@ -34,78 +62,100 @@ export class TalerBankIntegrationHttpClient { } isCompatible(version: string): boolean { - const compare = LibtoolVersion.compare(this.PROTOCOL_VERSION, version) - return compare?.compatible ?? false + const compare = LibtoolVersion.compare(this.PROTOCOL_VERSION, version); + return compare?.compatible ?? false; } /** * https://docs.taler.net/core/api-bank-integration.html#get--config - * + * */ async getConfig() { const url = new URL(`config`, this.baseUrl); const resp = await this.httpLib.fetch(url.href, { - method: "GET" + method: "GET", }); switch (resp.status) { - case HttpStatusCode.Ok: return opSuccess(resp, codecForIntegrationBankConfig()) - default: return opUnknownFailure(resp, await resp.text()) + case HttpStatusCode.Ok: + return opSuccess(resp, codecForIntegrationBankConfig()); + default: + return opUnknownFailure(resp, await resp.text()); } } /** * https://docs.taler.net/core/api-bank-integration.html#get--withdrawal-operation-$WITHDRAWAL_ID - * + * */ - async getWithdrawalOperationById(woid: string, params?: { - old_state?: WithdrawalOperationStatus - } & LongPollParams) { + async getWithdrawalOperationById( + woid: string, + params?: { + old_state?: WithdrawalOperationStatus; + } & LongPollParams, + ) { const url = new URL(`withdrawal-operation/${woid}`, this.baseUrl); - addLongPollingParam(url, params) + addLongPollingParam(url, params); if (params) { - url.searchParams.set("old_state", !params.old_state ? "pending" : params.old_state) + url.searchParams.set( + "old_state", + !params.old_state ? "pending" : params.old_state, + ); } const resp = await this.httpLib.fetch(url.href, { - method: "GET" + method: "GET", }); switch (resp.status) { - case HttpStatusCode.Ok: return opSuccess(resp, codecForBankWithdrawalOperationStatus()) - case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp) - default: return opUnknownFailure(resp, await resp.text()) + case HttpStatusCode.Ok: + return opSuccess(resp, codecForBankWithdrawalOperationStatus()); + case HttpStatusCode.NotFound: + return opKnownHttpFailure(resp.status, resp); + default: + return opUnknownFailure(resp, await resp.text()); } } /** * https://docs.taler.net/core/api-bank-integration.html#post-$BANK_API_BASE_URL-withdrawal-operation-$wopid - * + * */ - async completeWithdrawalOperationById(woid: string, body: TalerBankIntegrationApi.BankWithdrawalOperationPostRequest) { + async completeWithdrawalOperationById( + woid: string, + body: TalerBankIntegrationApi.BankWithdrawalOperationPostRequest, + ) { const url = new URL(`withdrawal-operation/${woid}`, this.baseUrl); const resp = await this.httpLib.fetch(url.href, { method: "POST", body, }); switch (resp.status) { - case HttpStatusCode.Ok: return opSuccess(resp, codecForBankWithdrawalOperationPostResponse()) - case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp) + case HttpStatusCode.Ok: + return opSuccess(resp, codecForBankWithdrawalOperationPostResponse()); + case HttpStatusCode.NotFound: + return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.Conflict: { - const body = await resp.json() - const details = codecForTalerErrorDetail().decode(body) + const body = await resp.json(); + const details = codecForTalerErrorDetail().decode(body); switch (details.code) { - case TalerErrorCode.BANK_WITHDRAWAL_OPERATION_RESERVE_SELECTION_CONFLICT: return opKnownTalerFailure(details.code, resp); - case TalerErrorCode.BANK_DUPLICATE_RESERVE_PUB_SUBJECT: return opKnownTalerFailure(details.code, resp); - case TalerErrorCode.BANK_UNKNOWN_ACCOUNT: return opKnownTalerFailure(details.code, resp); - case TalerErrorCode.BANK_ACCOUNT_IS_NOT_EXCHANGE: return opKnownTalerFailure(details.code, resp); - default: return opUnknownFailure(resp, body) + case TalerErrorCode.BANK_WITHDRAWAL_OPERATION_RESERVE_SELECTION_CONFLICT: + return opKnownTalerFailure(details.code, resp); + case TalerErrorCode.BANK_DUPLICATE_RESERVE_PUB_SUBJECT: + return opKnownTalerFailure(details.code, resp); + case TalerErrorCode.BANK_UNKNOWN_ACCOUNT: + return opKnownTalerFailure(details.code, resp); + case TalerErrorCode.BANK_ACCOUNT_IS_NOT_EXCHANGE: + return opKnownTalerFailure(details.code, resp); + default: + return opUnknownFailure(resp, body); } } - default: return opUnknownFailure(resp, await resp.text()) + default: + return opUnknownFailure(resp, await resp.text()); } } /** * https://docs.taler.net/core/api-bank-integration.html#post-$BANK_API_BASE_URL-withdrawal-operation-$wopid - * + * */ async abortWithdrawalOperationById(woid: string) { const url = new URL(`withdrawal-operation/${woid}/abort`, this.baseUrl); @@ -113,11 +163,14 @@ export class TalerBankIntegrationHttpClient { method: "POST", }); switch (resp.status) { - case HttpStatusCode.NoContent: return opEmptySuccess() - case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp) - case HttpStatusCode.Conflict: return opKnownHttpFailure(resp.status, resp); - default: return opUnknownFailure(resp, await resp.text()) + case HttpStatusCode.NoContent: + return opEmptySuccess(resp); + case HttpStatusCode.NotFound: + return opKnownHttpFailure(resp.status, resp); + case HttpStatusCode.Conflict: + return opKnownHttpFailure(resp.status, resp); + default: + return opUnknownFailure(resp, await resp.text()); } } } - -- cgit v1.2.3