summaryrefslogtreecommitdiff
path: root/packages/taler-util/src
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2024-03-08 10:08:15 -0300
committerSebastian <sebasjm@gmail.com>2024-03-08 10:08:15 -0300
commitb3ae213bc5987fbb6a2ce5c08d626f9f65508b03 (patch)
tree01b264fe249d92803d2f5224a621c15a5ff9b1fe /packages/taler-util/src
parent2a4dbc67e8d1e6a256431e34f0b2e0e19d204f70 (diff)
downloadwallet-core-b3ae213bc5987fbb6a2ce5c08d626f9f65508b03.tar.gz
wallet-core-b3ae213bc5987fbb6a2ce5c08d626f9f65508b03.tar.bz2
wallet-core-b3ae213bc5987fbb6a2ce5c08d626f9f65508b03.zip
remove http resp from operation
Diffstat (limited to 'packages/taler-util/src')
-rw-r--r--packages/taler-util/src/MerchantApiClient.ts6
-rw-r--r--packages/taler-util/src/errors.ts5
-rw-r--r--packages/taler-util/src/http-client/authentication.ts4
-rw-r--r--packages/taler-util/src/http-client/bank-conversion.ts8
-rw-r--r--packages/taler-util/src/http-client/bank-core.ts46
-rw-r--r--packages/taler-util/src/http-client/bank-integration.ts8
-rw-r--r--packages/taler-util/src/http-client/bank-revenue.ts4
-rw-r--r--packages/taler-util/src/http-client/bank-wire.ts14
-rw-r--r--packages/taler-util/src/http-client/exchange.ts14
-rw-r--r--packages/taler-util/src/operation.ts39
10 files changed, 72 insertions, 76 deletions
diff --git a/packages/taler-util/src/MerchantApiClient.ts b/packages/taler-util/src/MerchantApiClient.ts
index 8afacfa46..a71887940 100644
--- a/packages/taler-util/src/MerchantApiClient.ts
+++ b/packages/taler-util/src/MerchantApiClient.ts
@@ -44,7 +44,7 @@ import {
ResultByMethod,
opEmptySuccess,
opKnownHttpFailure,
- opSuccess,
+ opSuccessFromHttp,
opUnknownFailure,
} from "./operation.js";
import { AmountString } from "./taler-types.js";
@@ -318,7 +318,7 @@ export class MerchantApiClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForAny());
+ return opSuccessFromHttp(resp, codecForAny());
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
@@ -341,7 +341,7 @@ export class MerchantApiClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForMerchantConfig());
+ return opSuccessFromHttp(resp, codecForMerchantConfig());
default:
return opUnknownFailure(resp, await resp.text());
}
diff --git a/packages/taler-util/src/errors.ts b/packages/taler-util/src/errors.ts
index 3ada34d63..c5110bda8 100644
--- a/packages/taler-util/src/errors.ts
+++ b/packages/taler-util/src/errors.ts
@@ -108,6 +108,11 @@ export interface DetailsMap {
*/
contentType?: string;
};
+ [TalerErrorCode.GENERIC_CLIENT_INTERNAL_ERROR]: {
+ operation: string;
+ error: string;
+ detail: TalerErrorDetail | undefined;
+ }
[TalerErrorCode.WALLET_EXCHANGE_COIN_SIGNATURE_INVALID]: empty;
[TalerErrorCode.WALLET_WITHDRAWAL_GROUP_INCOMPLETE]: {
numErrors: number;
diff --git a/packages/taler-util/src/http-client/authentication.ts b/packages/taler-util/src/http-client/authentication.ts
index b17ede458..e8ef6a274 100644
--- a/packages/taler-util/src/http-client/authentication.ts
+++ b/packages/taler-util/src/http-client/authentication.ts
@@ -27,7 +27,7 @@ import { LibtoolVersion } from "../libtool-version.js";
import {
opEmptySuccess,
opKnownHttpFailure,
- opSuccess,
+ opSuccessFromHttp,
opUnknownFailure,
} from "../operation.js";
import {
@@ -74,7 +74,7 @@ export class TalerAuthenticationHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForTokenSuccessResponse());
+ return opSuccessFromHttp(resp, codecForTokenSuccessResponse());
//FIXME: missing in docs
case HttpStatusCode.Unauthorized:
return opKnownHttpFailure(resp.status, resp);
diff --git a/packages/taler-util/src/http-client/bank-conversion.ts b/packages/taler-util/src/http-client/bank-conversion.ts
index 5242a5fc6..91d07b11b 100644
--- a/packages/taler-util/src/http-client/bank-conversion.ts
+++ b/packages/taler-util/src/http-client/bank-conversion.ts
@@ -27,7 +27,7 @@ import {
ResultByMethod,
opEmptySuccess,
opKnownHttpFailure,
- opSuccess,
+ opSuccessFromHttp,
opUnknownFailure,
} from "../operation.js";
import { TalerErrorCode } from "../taler-error-codes.js";
@@ -79,7 +79,7 @@ export class TalerBankConversionHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForConversionBankConfig());
+ return opSuccessFromHttp(resp, codecForConversionBankConfig());
case HttpStatusCode.NotImplemented:
return opKnownHttpFailure(resp.status, resp);
default:
@@ -107,7 +107,7 @@ export class TalerBankConversionHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForCashinConversionResponse());
+ return opSuccessFromHttp(resp, codecForCashinConversionResponse());
case HttpStatusCode.BadRequest: {
const body = await resp.json();
const details = codecForTalerErrorDetail().decode(body);
@@ -154,7 +154,7 @@ export class TalerBankConversionHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForCashoutConversionResponse());
+ return opSuccessFromHttp(resp, codecForCashoutConversionResponse());
case HttpStatusCode.BadRequest: {
const body = await resp.json();
const details = codecForTalerErrorDetail().decode(body);
diff --git a/packages/taler-util/src/http-client/bank-core.ts b/packages/taler-util/src/http-client/bank-core.ts
index 90ba88b6a..40e29dcef 100644
--- a/packages/taler-util/src/http-client/bank-core.ts
+++ b/packages/taler-util/src/http-client/bank-core.ts
@@ -35,7 +35,7 @@ import {
ResultByMethod,
opEmptySuccess,
opFixedSuccess,
- opSuccess,
+ opSuccessFromHttp,
opUnknownFailure,
} from "../operation.js";
import { TalerAuthenticationHttpClient } from "./authentication.js";
@@ -115,7 +115,7 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForCoreBankConfig());
+ return opSuccessFromHttp(resp, codecForCoreBankConfig());
default:
return opUnknownFailure(resp, await resp.text());
}
@@ -143,7 +143,7 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForRegisterAccountResponse());
+ return opSuccessFromHttp(resp, codecForRegisterAccountResponse());
case HttpStatusCode.BadRequest:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.Unauthorized:
@@ -339,11 +339,11 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForPublicAccountsResponse());
+ return opSuccessFromHttp(resp, codecForPublicAccountsResponse());
case HttpStatusCode.NoContent:
- return opFixedSuccess(resp, { public_accounts: [] });
+ return opFixedSuccess({ public_accounts: [] });
case HttpStatusCode.NotFound:
- return opFixedSuccess(resp, { public_accounts: [] });
+ return opFixedSuccess({ public_accounts: [] });
default:
return opUnknownFailure(resp, await resp.text());
}
@@ -371,9 +371,9 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForListBankAccountsResponse());
+ return opSuccessFromHttp(resp, codecForListBankAccountsResponse());
case HttpStatusCode.NoContent:
- return opFixedSuccess(resp, { accounts: [] });
+ return opFixedSuccess({ accounts: [] });
case HttpStatusCode.Unauthorized:
return opKnownHttpFailure(resp.status, resp);
default:
@@ -395,7 +395,7 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForAccountData());
+ return opSuccessFromHttp(resp, codecForAccountData());
case HttpStatusCode.Unauthorized:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.NotFound:
@@ -428,9 +428,9 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForBankAccountTransactionsResponse());
+ return opSuccessFromHttp(resp, codecForBankAccountTransactionsResponse());
case HttpStatusCode.NoContent:
- return opFixedSuccess(resp, { transactions: [] });
+ return opFixedSuccess({ transactions: [] });
case HttpStatusCode.Unauthorized:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.NotFound:
@@ -457,7 +457,7 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForBankAccountTransactionInfo());
+ return opSuccessFromHttp(resp, codecForBankAccountTransactionInfo());
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.Unauthorized:
@@ -487,7 +487,7 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForCreateTransactionResponse());
+ return opSuccessFromHttp(resp, codecForCreateTransactionResponse());
case HttpStatusCode.Accepted:
return opKnownAlternativeFailure(
resp,
@@ -541,7 +541,7 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForBankAccountCreateWithdrawalResponse());
+ return opSuccessFromHttp(resp, codecForBankAccountCreateWithdrawalResponse());
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.Conflict:
@@ -656,7 +656,7 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForWithdrawalPublicInfo());
+ return opSuccessFromHttp(resp, codecForWithdrawalPublicInfo());
//FIXME: missing in docs
case HttpStatusCode.BadRequest:
return opKnownHttpFailure(resp.status, resp);
@@ -691,7 +691,7 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForCashoutPending());
+ return opSuccessFromHttp(resp, codecForCashoutPending());
case HttpStatusCode.Accepted:
return opKnownAlternativeFailure(
resp,
@@ -750,7 +750,7 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForCashoutStatusResponse());
+ return opSuccessFromHttp(resp, codecForCashoutStatusResponse());
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.NotImplemented:
@@ -775,9 +775,9 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForCashouts());
+ return opSuccessFromHttp(resp, codecForCashouts());
case HttpStatusCode.NoContent:
- return opFixedSuccess(resp, { cashouts: [] });
+ return opFixedSuccess({ cashouts: [] });
case HttpStatusCode.NotImplemented:
return opKnownHttpFailure(resp.status, resp);
default:
@@ -800,9 +800,9 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForGlobalCashouts());
+ return opSuccessFromHttp(resp, codecForGlobalCashouts());
case HttpStatusCode.NoContent:
- return opFixedSuccess(resp, { cashouts: [] });
+ return opFixedSuccess({ cashouts: [] });
case HttpStatusCode.NotImplemented:
return opKnownHttpFailure(resp.status, resp);
default:
@@ -831,7 +831,7 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForTanTransmission());
+ return opSuccessFromHttp(resp, codecForTanTransmission());
case HttpStatusCode.Unauthorized:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.NotFound:
@@ -930,7 +930,7 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForMonitorResponse());
+ return opSuccessFromHttp(resp, codecForMonitorResponse());
case HttpStatusCode.BadRequest:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.Unauthorized:
diff --git a/packages/taler-util/src/http-client/bank-integration.ts b/packages/taler-util/src/http-client/bank-integration.ts
index 938249daf..a224c1f09 100644
--- a/packages/taler-util/src/http-client/bank-integration.ts
+++ b/packages/taler-util/src/http-client/bank-integration.ts
@@ -24,7 +24,7 @@ import {
opEmptySuccess,
opKnownHttpFailure,
opKnownTalerFailure,
- opSuccess,
+ opSuccessFromHttp,
opUnknownFailure,
} from "../operation.js";
import { TalerErrorCode } from "../taler-error-codes.js";
@@ -77,7 +77,7 @@ export class TalerBankIntegrationHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForIntegrationBankConfig());
+ return opSuccessFromHttp(resp, codecForIntegrationBankConfig());
default:
return opUnknownFailure(resp, await resp.text());
}
@@ -106,7 +106,7 @@ export class TalerBankIntegrationHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForBankWithdrawalOperationStatus());
+ return opSuccessFromHttp(resp, codecForBankWithdrawalOperationStatus());
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
@@ -129,7 +129,7 @@ export class TalerBankIntegrationHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForBankWithdrawalOperationPostResponse());
+ return opSuccessFromHttp(resp, codecForBankWithdrawalOperationPostResponse());
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.Conflict: {
diff --git a/packages/taler-util/src/http-client/bank-revenue.ts b/packages/taler-util/src/http-client/bank-revenue.ts
index fb90f9c1c..3b6b3c258 100644
--- a/packages/taler-util/src/http-client/bank-revenue.ts
+++ b/packages/taler-util/src/http-client/bank-revenue.ts
@@ -21,7 +21,7 @@ import {
FailCasesByMethod,
ResultByMethod,
opKnownHttpFailure,
- opSuccess,
+ opSuccessFromHttp,
opUnknownFailure,
} from "../operation.js";
import {
@@ -90,7 +90,7 @@ export class TalerRevenueHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForMerchantIncomingHistory());
+ return opSuccessFromHttp(resp, codecForMerchantIncomingHistory());
case HttpStatusCode.BadRequest:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.Unauthorized:
diff --git a/packages/taler-util/src/http-client/bank-wire.ts b/packages/taler-util/src/http-client/bank-wire.ts
index ba68d26ef..54211fef7 100644
--- a/packages/taler-util/src/http-client/bank-wire.ts
+++ b/packages/taler-util/src/http-client/bank-wire.ts
@@ -22,7 +22,7 @@ import {
ResultByMethod,
opFixedSuccess,
opKnownHttpFailure,
- opSuccess,
+ opSuccessFromHttp,
opUnknownFailure,
} from "../operation.js";
import {
@@ -96,7 +96,7 @@ export class TalerWireGatewayHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForTransferResponse());
+ return opSuccessFromHttp(resp, codecForTransferResponse());
//FIXME: show more details in docs
case HttpStatusCode.BadRequest:
return opKnownHttpFailure(resp.status, resp);
@@ -131,10 +131,10 @@ export class TalerWireGatewayHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForIncomingHistory());
+ return opSuccessFromHttp(resp, codecForIncomingHistory());
//FIXME: account should not be returned or make it optional
case HttpStatusCode.NoContent:
- return opFixedSuccess(resp, {
+ return opFixedSuccess({
incoming_transactions: [],
credit_account: undefined,
});
@@ -170,10 +170,10 @@ export class TalerWireGatewayHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForOutgoingHistory());
+ return opSuccessFromHttp(resp, codecForOutgoingHistory());
//FIXME: account should not be returned or make it optional
case HttpStatusCode.NoContent:
- return opFixedSuccess(resp, {
+ return opFixedSuccess({
outgoing_transactions: [],
debit_account: undefined,
});
@@ -208,7 +208,7 @@ export class TalerWireGatewayHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForAddIncomingResponse());
+ return opSuccessFromHttp(resp, codecForAddIncomingResponse());
//FIXME: show more details in docs
case HttpStatusCode.BadRequest:
return opKnownHttpFailure(resp.status, resp);
diff --git a/packages/taler-util/src/http-client/exchange.ts b/packages/taler-util/src/http-client/exchange.ts
index 003410ddb..c61ba1f8d 100644
--- a/packages/taler-util/src/http-client/exchange.ts
+++ b/packages/taler-util/src/http-client/exchange.ts
@@ -9,7 +9,7 @@ import {
opEmptySuccess,
opFixedSuccess,
opKnownHttpFailure,
- opSuccess,
+ opSuccessFromHttp,
opUnknownFailure,
} from "../operation.js";
import {
@@ -70,7 +70,7 @@ export class TalerExchangeHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForExchangeConfig());
+ return opSuccessFromHttp(resp, codecForExchangeConfig());
default:
return opUnknownFailure(resp, await resp.text());
}
@@ -87,7 +87,7 @@ export class TalerExchangeHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForExchangeKeys());
+ return opSuccessFromHttp(resp, codecForExchangeKeys());
default:
return opUnknownFailure(resp, await resp.text());
}
@@ -123,9 +123,9 @@ export class TalerExchangeHttpClient {
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForAmlRecords());
+ return opSuccessFromHttp(resp, codecForAmlRecords());
case HttpStatusCode.NoContent:
- return opFixedSuccess(resp, { records: [] });
+ return opFixedSuccess({ records: [] });
//this should be unauthorized
case HttpStatusCode.Forbidden:
return opKnownHttpFailure(resp.status, resp);
@@ -156,9 +156,9 @@ export class TalerExchangeHttpClient {
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccess(resp, codecForAmlDecisionDetails());
+ return opSuccessFromHttp(resp, codecForAmlDecisionDetails());
case HttpStatusCode.NoContent:
- return opFixedSuccess(resp, { aml_history: [], kyc_attributes: [] });
+ return opFixedSuccess({ aml_history: [], kyc_attributes: [] });
//this should be unauthorized
case HttpStatusCode.Forbidden:
return opKnownHttpFailure(resp.status, resp);
diff --git a/packages/taler-util/src/operation.ts b/packages/taler-util/src/operation.ts
index 02cf70196..ecf4a020a 100644
--- a/packages/taler-util/src/operation.ts
+++ b/packages/taler-util/src/operation.ts
@@ -57,8 +57,6 @@ export function isOperationFail<T, E>(
export interface OperationOk<BodyT> {
type: "ok";
- httpResp: HttpResponse;
-
/**
* Parsed response body.
*/
@@ -71,8 +69,6 @@ export interface OperationOk<BodyT> {
export interface OperationFail<T> {
type: "fail";
- httpResp: HttpResponse;
-
/**
* Error case (either HTTP status code or TalerErrorCode)
*/
@@ -87,8 +83,6 @@ export interface OperationFail<T> {
export interface OperationAlternative<T, B> {
type: "fail";
- httpResp: HttpResponse;
-
case: T;
body: B;
}
@@ -102,24 +96,24 @@ export interface OperationFailWithBody<B> {
body: B[OperationFailWithBody<B>["case"]];
}
-export async function opSuccess<T>(
+export async function opSuccessFromHttp<T>(
resp: HttpResponse,
codec: Codec<T>,
): Promise<OperationOk<T>> {
const body = await readSuccessResponseJsonOrThrow(resp, codec);
- return { type: "ok" as const, body, httpResp: resp };
+ return { type: "ok" as const, body };
}
/**
* Success case, but instead of the body we're returning a fixed response
* to the client.
*/
-export function opFixedSuccess<T>(resp: HttpResponse, body: T): OperationOk<T> {
- return { type: "ok" as const, body, httpResp: resp };
+export function opFixedSuccess<T>(body: T): OperationOk<T> {
+ return { type: "ok" as const, body };
}
export function opEmptySuccess(resp: HttpResponse): OperationOk<void> {
- return { type: "ok" as const, body: void 0, httpResp: resp };
+ return { type: "ok" as const, body: void 0 };
}
export async function opKnownFailureWithBody<B>(
@@ -135,7 +129,7 @@ export async function opKnownAlternativeFailure<T extends HttpStatusCode, B>(
codec: Codec<B>,
): Promise<OperationAlternative<T, B>> {
const body = await readSuccessResponseJsonOrThrow(resp, codec);
- return { type: "fail", case: s, body, httpResp: resp };
+ return { type: "fail", case: s, body };
}
export async function opKnownHttpFailure<T extends HttpStatusCode>(
@@ -143,7 +137,7 @@ export async function opKnownHttpFailure<T extends HttpStatusCode>(
resp: HttpResponse,
): Promise<OperationFail<T>> {
const detail = await readTalerErrorResponse(resp);
- return { type: "fail", case: s, detail, httpResp: resp };
+ return { type: "fail", case: s, detail };
}
export async function opKnownTalerFailure<T extends TalerErrorCode>(
@@ -151,7 +145,7 @@ export async function opKnownTalerFailure<T extends TalerErrorCode>(
resp: HttpResponse,
): Promise<OperationFail<T>> {
const detail = await readTalerErrorResponse(resp);
- return { type: "fail", case: s, detail, httpResp: resp };
+ return { type: "fail", case: s, detail };
}
export function opUnknownFailure(resp: HttpResponse, text: string): never {
@@ -171,24 +165,21 @@ export function opUnknownFailure(resp: HttpResponse, text: string): never {
* Convenience function to throw an error if the operation is not a success.
*/
export function narrowOpSuccessOrThrow<Body, ErrorEnum>(
+ opName: string,
opRes: OperationResult<Body, ErrorEnum>,
): asserts opRes is OperationOk<Body> {
- const httpResponse = opRes.httpResp;
if (opRes.type !== "ok") {
throw TalerError.fromDetail(
- TalerErrorCode.WALLET_UNEXPECTED_REQUEST_ERROR,
+ TalerErrorCode.GENERIC_CLIENT_INTERNAL_ERROR,
{
- requestUrl: httpResponse.requestUrl,
- requestMethod: httpResponse.requestMethod,
- httpStatusCode: httpResponse.status,
- errorResponse:
+ operation: opName,
+ error: String(opRes.case),
+ detail:
"detail" in opRes
? opRes.detail
- : "body" in opRes
- ? opRes.body
- : undefined,
+ : undefined,
},
- `Unexpected HTTP status ${httpResponse.status} in response`,
+ `Operation ${opName} failed: ${String(opRes.case)}`,
);
}
}