From 2c1f3ffec19e95716a57647f35c7bd68e8565e5a Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 1 Apr 2024 14:03:50 -0300 Subject: fix #8681 --- packages/taler-util/src/http-client/bank-core.ts | 159 +++++++++++------------ 1 file changed, 75 insertions(+), 84 deletions(-) (limited to 'packages/taler-util/src/http-client/bank-core.ts') diff --git a/packages/taler-util/src/http-client/bank-core.ts b/packages/taler-util/src/http-client/bank-core.ts index 7a98b6281..3ef58b2f4 100644 --- a/packages/taler-util/src/http-client/bank-core.ts +++ b/packages/taler-util/src/http-client/bank-core.ts @@ -29,6 +29,7 @@ import { import { HttpRequestLibrary, createPlatformHttpLib, + readTalerErrorResponse, } from "@gnu-taler/taler-util/http"; import { FailCasesByMethod, @@ -127,7 +128,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.Ok: return opSuccessFromHttp(resp, codecForCoreBankConfig()); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -165,31 +166,30 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.Unauthorized: return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.Conflict: { - const body = await resp.json(); - const details = codecForTalerErrorDetail().decode(body); + const details = await readTalerErrorResponse(resp); switch (details.code) { case TalerErrorCode.BANK_REGISTER_USERNAME_REUSE: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_REGISTER_PAYTO_URI_REUSE: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_UNALLOWED_DEBIT: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_RESERVED_USERNAME_CONFLICT: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_NON_ADMIN_PATCH_DEBT_LIMIT: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_NON_ADMIN_SET_TAN_CHANNEL: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_TAN_CHANNEL_NOT_SUPPORTED: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_MISSING_TAN_INFO: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); default: - return opUnknownFailure(resp, body); + return opUnknownFailure(resp, details); } } default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } /** @@ -219,19 +219,18 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.Conflict: { - const body = await resp.json(); - const details = codecForTalerErrorDetail().decode(body); + const details = await readTalerErrorResponse(resp); switch (details.code) { case TalerErrorCode.BANK_RESERVED_USERNAME_CONFLICT: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_ACCOUNT_BALANCE_NOT_ZERO: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); default: - return opUnknownFailure(resp, body); + return opUnknownFailure(resp, details); } } default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -267,25 +266,24 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.Conflict: { - const body = await resp.json(); - const details = codecForTalerErrorDetail().decode(body); + const details = await readTalerErrorResponse(resp); switch (details.code) { case TalerErrorCode.BANK_NON_ADMIN_PATCH_LEGAL_NAME: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_NON_ADMIN_PATCH_CASHOUT: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_NON_ADMIN_PATCH_DEBT_LIMIT: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_TAN_CHANNEL_NOT_SUPPORTED: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_MISSING_TAN_INFO: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); default: - return opUnknownFailure(resp, body); + return opUnknownFailure(resp, details); } } default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -321,19 +319,18 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.Unauthorized: return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.Conflict: { - const body = await resp.json(); - const details = codecForTalerErrorDetail().decode(body); + const details = await readTalerErrorResponse(resp); switch (details.code) { case TalerErrorCode.BANK_NON_ADMIN_PATCH_MISSING_OLD_PASSWORD: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_PATCH_BAD_OLD_PASSWORD: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); default: - return opUnknownFailure(resp, body); + return opUnknownFailure(resp, details); } } default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -361,7 +358,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotFound: return opFixedSuccess({ public_accounts: [] }); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -393,7 +390,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.Unauthorized: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -417,7 +414,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -455,7 +452,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -482,7 +479,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.Unauthorized: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -520,23 +517,22 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.Conflict: { - const body = await resp.json(); - const details = codecForTalerErrorDetail().decode(body); + const details = await readTalerErrorResponse(resp); switch (details.code) { case TalerErrorCode.BANK_ADMIN_CREDITOR: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_SAME_ACCOUNT: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_UNKNOWN_CREDITOR: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_UNALLOWED_DEBIT: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); default: - return opUnknownFailure(resp, body); + return opUnknownFailure(resp, details); } } default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -574,7 +570,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.Unauthorized: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -609,21 +605,20 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.Conflict: { - const body = await resp.json(); - const details = codecForTalerErrorDetail().decode(body); + const details = await readTalerErrorResponse(resp); switch (details.code) { case TalerErrorCode.BANK_CONFIRM_ABORT_CONFLICT: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_CONFIRM_INCOMPLETE: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_UNALLOWED_DEBIT: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); default: - return opUnknownFailure(resp, body); + return opUnknownFailure(resp, details); } } default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -653,7 +648,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.Conflict: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -687,7 +682,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -725,35 +720,33 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.Conflict: { - const body = await resp.json(); - const details = codecForTalerErrorDetail().decode(body); + const details = await readTalerErrorResponse(resp); switch (details.code) { case TalerErrorCode.BANK_TRANSFER_REQUEST_UID_REUSED: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_BAD_CONVERSION: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_UNALLOWED_DEBIT: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_CONFIRM_INCOMPLETE: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); default: - return opUnknownFailure(resp, body); + return opUnknownFailure(resp, details); } } case HttpStatusCode.BadGateway: { - const body = await resp.json(); - const details = codecForTalerErrorDetail().decode(body); + const details = await readTalerErrorResponse(resp); switch (details.code) { case TalerErrorCode.BANK_TAN_CHANNEL_SCRIPT_FAILED: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); default: - return opUnknownFailure(resp, body); + return opUnknownFailure(resp, details); } } case HttpStatusCode.NotImplemented: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -780,7 +773,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotImplemented: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -805,7 +798,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotImplemented: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -830,7 +823,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotImplemented: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -861,17 +854,16 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.BadGateway: { - const body = await resp.json(); - const details = codecForTalerErrorDetail().decode(body); + const details = await readTalerErrorResponse(resp); switch (details.code) { case TalerErrorCode.BANK_TAN_CHANNEL_SCRIPT_FAILED: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); default: - return opUnknownFailure(resp, body); + return opUnknownFailure(resp, details); } } default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -903,21 +895,20 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp); case HttpStatusCode.Conflict: { - const body = await resp.json(); - const details = codecForTalerErrorDetail().decode(body); + const details = await readTalerErrorResponse(resp); switch (details.code) { case TalerErrorCode.BANK_TAN_CHALLENGE_EXPIRED: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); case TalerErrorCode.BANK_TAN_CHALLENGE_FAILED: - return opKnownTalerFailure(details.code, resp); + return opKnownTalerFailure(details.code, details); default: - return opUnknownFailure(resp, body); + return opUnknownFailure(resp, details); } } case HttpStatusCode.TooManyRequests: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } @@ -960,7 +951,7 @@ export class TalerCoreBankHttpClient { case HttpStatusCode.Unauthorized: return opKnownHttpFailure(resp.status, resp); default: - return opUnknownFailure(resp, await resp.text()); + return opUnknownFailure(resp, await readTalerErrorResponse(resp)); } } -- cgit v1.2.3