summaryrefslogtreecommitdiff
path: root/packages/taler-util
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2024-04-01 14:03:50 -0300
committerSebastian <sebasjm@gmail.com>2024-04-01 14:03:50 -0300
commit2c1f3ffec19e95716a57647f35c7bd68e8565e5a (patch)
tree729d00208a9c0c59fb18858e1f1b7c2e770cc224 /packages/taler-util
parent7eb0f8a0a5c1c6f4bf3d19b3b37da6d7c7b3c5e1 (diff)
downloadwallet-core-2c1f3ffec19e95716a57647f35c7bd68e8565e5a.tar.gz
wallet-core-2c1f3ffec19e95716a57647f35c7bd68e8565e5a.tar.bz2
wallet-core-2c1f3ffec19e95716a57647f35c7bd68e8565e5a.zip
fix #8681
Diffstat (limited to 'packages/taler-util')
-rw-r--r--packages/taler-util/src/MerchantApiClient.ts9
-rw-r--r--packages/taler-util/src/bank-api-client.ts3
-rw-r--r--packages/taler-util/src/http-client/authentication.ts7
-rw-r--r--packages/taler-util/src/http-client/bank-conversion.ts10
-rw-r--r--packages/taler-util/src/http-client/bank-core.ts159
-rw-r--r--packages/taler-util/src/http-client/bank-integration.ts22
-rw-r--r--packages/taler-util/src/http-client/bank-revenue.ts4
-rw-r--r--packages/taler-util/src/http-client/bank-wire.ts12
-rw-r--r--packages/taler-util/src/http-client/exchange.ts12
-rw-r--r--packages/taler-util/src/http-client/merchant.ts121
-rw-r--r--packages/taler-util/src/operation.ts19
-rw-r--r--packages/taler-util/src/taler-error-codes.ts3
-rw-r--r--packages/taler-util/src/taleruri.ts63
13 files changed, 242 insertions, 202 deletions
diff --git a/packages/taler-util/src/MerchantApiClient.ts b/packages/taler-util/src/MerchantApiClient.ts
index fa9a00176..c27f1d582 100644
--- a/packages/taler-util/src/MerchantApiClient.ts
+++ b/packages/taler-util/src/MerchantApiClient.ts
@@ -25,6 +25,7 @@ import {
createPlatformHttpLib,
expectSuccessResponseOrThrow,
readSuccessResponseJsonOrThrow,
+ readTalerErrorResponse,
} from "./http.js";
import { FacadeCredentials } from "./libeufin-api-types.js";
import { LibtoolVersion } from "./libtool-version.js";
@@ -305,7 +306,7 @@ export class MerchantApiClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -321,7 +322,7 @@ export class MerchantApiClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -342,7 +343,7 @@ export class MerchantApiClient {
case HttpStatusCode.Ok:
return opSuccessFromHttp(resp, codecForMerchantConfig());
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -362,7 +363,7 @@ export class MerchantApiClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
diff --git a/packages/taler-util/src/bank-api-client.ts b/packages/taler-util/src/bank-api-client.ts
index 9c35af948..51359129d 100644
--- a/packages/taler-util/src/bank-api-client.ts
+++ b/packages/taler-util/src/bank-api-client.ts
@@ -45,6 +45,7 @@ import {
createPlatformHttpLib,
HttpRequestLibrary,
readSuccessResponseJsonOrThrow,
+ readTalerErrorResponse,
} from "@gnu-taler/taler-util/http";
const logger = new Logger("bank-api-client.ts");
@@ -420,7 +421,7 @@ export class TalerCorebankApiClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
diff --git a/packages/taler-util/src/http-client/authentication.ts b/packages/taler-util/src/http-client/authentication.ts
index f77df2ed0..b8affee7b 100644
--- a/packages/taler-util/src/http-client/authentication.ts
+++ b/packages/taler-util/src/http-client/authentication.ts
@@ -22,6 +22,7 @@ import {
HttpRequestLibrary,
createPlatformHttpLib,
makeBasicAuthHeader,
+ readTalerErrorResponse,
} from "../http.js";
import { LibtoolVersion } from "../libtool-version.js";
import {
@@ -82,7 +83,7 @@ export class TalerAuthenticationHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -111,7 +112,7 @@ export class TalerAuthenticationHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -130,7 +131,7 @@ export class TalerAuthenticationHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
}
diff --git a/packages/taler-util/src/http-client/bank-conversion.ts b/packages/taler-util/src/http-client/bank-conversion.ts
index 3db9df101..cb14d8b34 100644
--- a/packages/taler-util/src/http-client/bank-conversion.ts
+++ b/packages/taler-util/src/http-client/bank-conversion.ts
@@ -18,7 +18,7 @@
* Imports.
*/
import { AmountJson, Amounts } from "../amounts.js";
-import { HttpRequestLibrary } from "../http-common.js";
+import { HttpRequestLibrary, readTalerErrorResponse } from "../http-common.js";
import { HttpStatusCode } from "../http-status-codes.js";
import { createPlatformHttpLib } from "../http.js";
import { LibtoolVersion } from "../libtool-version.js";
@@ -94,7 +94,7 @@ export class TalerBankConversionHttpClient {
case HttpStatusCode.NotImplemented:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -138,7 +138,7 @@ export class TalerBankConversionHttpClient {
case HttpStatusCode.NotImplemented:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -185,7 +185,7 @@ export class TalerBankConversionHttpClient {
case HttpStatusCode.NotImplemented:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -217,7 +217,7 @@ export class TalerBankConversionHttpClient {
case HttpStatusCode.NotImplemented:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
}
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));
}
}
diff --git a/packages/taler-util/src/http-client/bank-integration.ts b/packages/taler-util/src/http-client/bank-integration.ts
index f63fa4445..75e6a627a 100644
--- a/packages/taler-util/src/http-client/bank-integration.ts
+++ b/packages/taler-util/src/http-client/bank-integration.ts
@@ -14,7 +14,7 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { HttpRequestLibrary } from "../http-common.js";
+import { HttpRequestLibrary, readTalerErrorResponse } from "../http-common.js";
import { HttpStatusCode } from "../http-status-codes.js";
import { createPlatformHttpLib } from "../http.js";
import { LibtoolVersion } from "../libtool-version.js";
@@ -79,7 +79,7 @@ export class TalerBankIntegrationHttpClient {
case HttpStatusCode.Ok:
return opSuccessFromHttp(resp, codecForIntegrationBankConfig());
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -110,7 +110,7 @@ export class TalerBankIntegrationHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -136,23 +136,23 @@ export class TalerBankIntegrationHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.Conflict: {
- const body = await resp.json();
+ const body = await readTalerErrorResponse(resp);
const details = codecForTalerErrorDetail().decode(body);
switch (details.code) {
case TalerErrorCode.BANK_WITHDRAWAL_OPERATION_RESERVE_SELECTION_CONFLICT:
- return opKnownTalerFailure(details.code, resp);
+ return opKnownTalerFailure(details.code, details);
case TalerErrorCode.BANK_DUPLICATE_RESERVE_PUB_SUBJECT:
- return opKnownTalerFailure(details.code, resp);
+ return opKnownTalerFailure(details.code, details);
case TalerErrorCode.BANK_UNKNOWN_ACCOUNT:
- return opKnownTalerFailure(details.code, resp);
+ return opKnownTalerFailure(details.code, details);
case TalerErrorCode.BANK_ACCOUNT_IS_NOT_EXCHANGE:
- 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));
}
}
@@ -173,7 +173,7 @@ export class TalerBankIntegrationHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
}
diff --git a/packages/taler-util/src/http-client/bank-revenue.ts b/packages/taler-util/src/http-client/bank-revenue.ts
index 3b6b3c258..d2f0c7000 100644
--- a/packages/taler-util/src/http-client/bank-revenue.ts
+++ b/packages/taler-util/src/http-client/bank-revenue.ts
@@ -14,7 +14,7 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { HttpRequestLibrary, makeBasicAuthHeader } from "../http-common.js";
+import { HttpRequestLibrary, makeBasicAuthHeader, readTalerErrorResponse } from "../http-common.js";
import { HttpStatusCode } from "../http-status-codes.js";
import { createPlatformHttpLib } from "../http.js";
import {
@@ -98,7 +98,7 @@ export class TalerRevenueHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
}
diff --git a/packages/taler-util/src/http-client/bank-wire.ts b/packages/taler-util/src/http-client/bank-wire.ts
index 54211fef7..a8c976a80 100644
--- a/packages/taler-util/src/http-client/bank-wire.ts
+++ b/packages/taler-util/src/http-client/bank-wire.ts
@@ -14,7 +14,7 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { HttpRequestLibrary, makeBasicAuthHeader } from "../http-common.js";
+import { HttpRequestLibrary, makeBasicAuthHeader, readTalerErrorResponse } from "../http-common.js";
import { HttpStatusCode } from "../http-status-codes.js";
import { createPlatformHttpLib } from "../http.js";
import {
@@ -77,7 +77,7 @@ export class TalerWireGatewayHttpClient {
// });
// switch (resp.status) {
// case HttpStatusCode.Ok: return opSuccess(resp, codecForCoreBankConfig())
- // default: return opUnknownFailure(resp, await resp.text())
+ // default: return opUnknownFailure(resp, await readTalerErrorResponse(resp))
// }
// }
@@ -108,7 +108,7 @@ export class TalerWireGatewayHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -147,7 +147,7 @@ export class TalerWireGatewayHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -186,7 +186,7 @@ export class TalerWireGatewayHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -220,7 +220,7 @@ export class TalerWireGatewayHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
}
diff --git a/packages/taler-util/src/http-client/exchange.ts b/packages/taler-util/src/http-client/exchange.ts
index c61ba1f8d..befde4d20 100644
--- a/packages/taler-util/src/http-client/exchange.ts
+++ b/packages/taler-util/src/http-client/exchange.ts
@@ -1,4 +1,4 @@
-import { HttpRequestLibrary } from "../http-common.js";
+import { HttpRequestLibrary, readTalerErrorResponse } from "../http-common.js";
import { HttpStatusCode } from "../http-status-codes.js";
import { createPlatformHttpLib } from "../http.js";
import { LibtoolVersion } from "../libtool-version.js";
@@ -72,7 +72,7 @@ export class TalerExchangeHttpClient {
case HttpStatusCode.Ok:
return opSuccessFromHttp(resp, codecForExchangeConfig());
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
/**
@@ -89,7 +89,7 @@ export class TalerExchangeHttpClient {
case HttpStatusCode.Ok:
return opSuccessFromHttp(resp, codecForExchangeKeys());
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -136,7 +136,7 @@ export class TalerExchangeHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -169,7 +169,7 @@ export class TalerExchangeHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -203,7 +203,7 @@ export class TalerExchangeHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
}
diff --git a/packages/taler-util/src/http-client/merchant.ts b/packages/taler-util/src/http-client/merchant.ts
index 7efa90a5f..5fd001555 100644
--- a/packages/taler-util/src/http-client/merchant.ts
+++ b/packages/taler-util/src/http-client/merchant.ts
@@ -62,6 +62,7 @@ import {
HttpRequestLibrary,
HttpResponse,
createPlatformHttpLib,
+ readTalerErrorResponse,
} from "@gnu-taler/taler-util/http";
import { opSuccessFromHttp, opUnknownFailure } from "../operation.js";
import {
@@ -127,7 +128,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Ok:
return opSuccessFromHttp(resp, codecForMerchantConfig());
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -154,7 +155,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -193,7 +194,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.GatewayTimeout:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -255,7 +256,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotAcceptable:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -280,7 +281,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -308,7 +309,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -336,7 +337,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -371,7 +372,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -399,7 +400,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -423,7 +424,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Ok:
return opSuccessFromHttp(resp, codecForQueryInstancesResponse());
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -456,7 +457,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -500,7 +501,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.GatewayTimeout:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -532,7 +533,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -561,7 +562,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -586,7 +587,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -611,7 +612,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -636,7 +637,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -666,7 +667,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -698,7 +699,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -725,7 +726,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -750,7 +751,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -778,7 +779,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Gone:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -805,7 +806,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -848,7 +849,7 @@ export class TalerMerchantInstanceHttpClient {
codecForOutOfStockResponse(),
);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -894,7 +895,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Ok:
return opSuccessFromHttp(resp, codecForOrderHistory());
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -944,7 +945,7 @@ export class TalerMerchantInstanceHttpClient {
codecForOutOfStockResponse(),
);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -976,7 +977,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1003,7 +1004,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1039,7 +1040,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1071,7 +1072,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1111,7 +1112,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Ok:
return opSuccessFromHttp(resp, codecForTansferList());
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1138,7 +1139,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1168,7 +1169,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1199,7 +1200,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1223,7 +1224,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1258,7 +1259,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1282,7 +1283,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1311,7 +1312,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1342,7 +1343,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1366,7 +1367,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1390,7 +1391,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1414,7 +1415,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1433,7 +1434,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1480,7 +1481,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1512,7 +1513,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1537,7 +1538,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1561,7 +1562,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1585,7 +1586,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1615,7 +1616,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1644,7 +1645,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1669,7 +1670,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1694,7 +1695,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1718,7 +1719,7 @@ export class TalerMerchantInstanceHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1786,7 +1787,7 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1816,7 +1817,7 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1845,7 +1846,7 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1868,7 +1869,7 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
case HttpStatusCode.Ok:
return opSuccessFromHttp(resp, codecForInstancesResponse());
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1892,7 +1893,7 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
case HttpStatusCode.Ok:
return opSuccessFromHttp(resp, codecForQueryInstancesResponse());
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1924,7 +1925,7 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
@@ -1968,7 +1969,7 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
case HttpStatusCode.Conflict:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
}
diff --git a/packages/taler-util/src/operation.ts b/packages/taler-util/src/operation.ts
index 07a216fe9..771f5860b 100644
--- a/packages/taler-util/src/operation.ts
+++ b/packages/taler-util/src/operation.ts
@@ -138,22 +138,21 @@ export async function opKnownHttpFailure<T extends HttpStatusCode>(
return { type: "fail", case: s, detail };
}
-export async function opKnownTalerFailure<T extends TalerErrorCode>(
+export function opKnownTalerFailure<T extends TalerErrorCode>(
s: T,
- resp: HttpResponse,
-): Promise<OperationFail<T>> {
- const detail = await readTalerErrorResponse(resp);
+ detail: TalerErrorDetail,
+): OperationFail<T> {
return { type: "fail", case: s, detail };
}
-export function opUnknownFailure(resp: HttpResponse, text: string): never {
+export function opUnknownFailure(resp: HttpResponse, error: TalerErrorDetail): never {
throw TalerError.fromDetail(
TalerErrorCode.WALLET_UNEXPECTED_REQUEST_ERROR,
{
requestUrl: resp.requestUrl,
requestMethod: resp.requestMethod,
httpStatusCode: resp.status,
- errorResponse: text,
+ errorResponse: error,
},
`Unexpected HTTP status ${resp.status} in response`,
);
@@ -184,10 +183,10 @@ export type ResultByMethod<
p extends keyof TT,
> = TT[p] extends (...args: any[]) => infer Ret
? Ret extends Promise<infer Result>
- ? Result extends OperationResult<any, any>
- ? Result
- : never
- : never //api always use Promises
+ ? Result extends OperationResult<any, any>
+ ? Result
+ : never
+ : never //api always use Promises
: never; //error cases just for functions
export type FailCasesByMethod<TT extends object, p extends keyof TT> = Exclude<
diff --git a/packages/taler-util/src/taler-error-codes.ts b/packages/taler-util/src/taler-error-codes.ts
index 2c65255df..822388e2b 100644
--- a/packages/taler-util/src/taler-error-codes.ts
+++ b/packages/taler-util/src/taler-error-codes.ts
@@ -22,6 +22,9 @@
*/
export enum TalerErrorCode {
+ TALER_URI_PREFIX = 1111,
+ TALER_URI_UNKOWN_ACTION = 1111,
+ TALER_URI_NO_ENOUGH_COMPONENT = 1112,
/**
* Special code to indicate success (no error).
* Returned with an HTTP status code of #MHD_HTTP_UNINITIALIZED (0).
diff --git a/packages/taler-util/src/taleruri.ts b/packages/taler-util/src/taleruri.ts
index 97b82c061..b56295c3f 100644
--- a/packages/taler-util/src/taleruri.ts
+++ b/packages/taler-util/src/taleruri.ts
@@ -27,7 +27,8 @@ import { Codec, Context, DecodingError, renderContext } from "./codec.js";
import { canonicalizeBaseUrl } from "./helpers.js";
import { AmountString } from "./taler-types.js";
import { URL, URLSearchParams } from "./url.js";
-
+import { opFixedSuccess, opKnownTalerFailure } from "./operation.js";
+import { TalerErrorCode } from "./taler-error-codes.js";
/**
* A parsed taler URI.
*/
@@ -130,15 +131,17 @@ export interface WithdrawExchangeUri {
* Parse a taler[+http]://withdraw URI.
* Return undefined if not passed a valid URI.
*/
-export function parseWithdrawUri(s: string): WithdrawUriResult | undefined {
- const pi = parseProtoInfo(s, "withdraw");
- if (!pi) {
- return undefined;
+export function parseWithdrawUriWithError(s: string) {
+ const pi = parseProtoInfoWithError(s, "withdraw");
+ if (pi.type === "fail") {
+ return pi;
}
- const parts = pi.rest.split("/");
+ const parts = pi.body.rest.split("/");
if (parts.length < 2) {
- return undefined;
+ return opKnownTalerFailure(TalerErrorCode.TALER_URI_NO_ENOUGH_COMPONENT, {
+ code: TalerErrorCode.TALER_URI_NO_ENOUGH_COMPONENT
+ });
}
const host = parts[0].toLowerCase();
@@ -153,11 +156,22 @@ export function parseWithdrawUri(s: string): WithdrawUriResult | undefined {
const withdrawId = parts[parts.length - 1];
const p = [host, ...pathSegments].join("/");
- return {
+ const result: WithdrawUriResult = {
type: TalerUriAction.Withdraw,
- bankIntegrationApiBaseUrl: canonicalizeBaseUrl(`${pi.innerProto}://${p}/`),
+ bankIntegrationApiBaseUrl: canonicalizeBaseUrl(`${pi.body.innerProto}://${p}/`),
withdrawalOperationId: withdrawId,
- };
+ }
+ return opFixedSuccess(result);
+}
+
+/**
+ *
+ * @deprecated use parseWithdrawUriWithError
+ */
+export function parseWithdrawUri(s: string): WithdrawUriResult | undefined {
+ const r = parseWithdrawUriWithError(s);
+ if (r.type === "fail") return undefined;
+ return r.body;
}
/**
@@ -215,6 +229,35 @@ function parseProtoInfo(
}
}
+function parseProtoInfoWithError(
+ s: string,
+ action: string,
+) {
+ if (!s.toLocaleLowerCase().startsWith("taler://") ||
+ !s.toLocaleLowerCase().startsWith("taler+http://")) {
+ return opKnownTalerFailure(TalerErrorCode.TALER_URI_PREFIX, {
+ code: TalerErrorCode.TALER_URI_PREFIX,
+ });
+ }
+ const pfxPlain = `taler://${action}/`;
+ const pfxHttp = `taler+http://${action}/`;
+ if (s.toLowerCase().startsWith(pfxPlain)) {
+ return opFixedSuccess({
+ innerProto: "https",
+ rest: s.substring(pfxPlain.length),
+ });
+ } else if (s.toLowerCase().startsWith(pfxHttp)) {
+ return opFixedSuccess({
+ innerProto: "http",
+ rest: s.substring(pfxHttp.length),
+ });
+ } else {
+ return opKnownTalerFailure(TalerErrorCode.TALER_URI_UNKOWN_ACTION, {
+ code: TalerErrorCode.TALER_URI_UNKOWN_ACTION,
+ });
+ }
+}
+
type Parser = (s: string) => TalerUri | undefined;
const parsers: { [A in TalerUriAction]: Parser } = {
[TalerUriAction.Pay]: parsePayUri,