From ac89c3d277134e49e44d8b0afd4930fd4df934aa Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 10 Mar 2021 12:00:30 +0100 Subject: restructure sync, store errors --- packages/taler-wallet-core/src/util/http.ts | 39 +++++++++++++++++------------ 1 file changed, 23 insertions(+), 16 deletions(-) (limited to 'packages/taler-wallet-core/src/util') diff --git a/packages/taler-wallet-core/src/util/http.ts b/packages/taler-wallet-core/src/util/http.ts index 43a0ab16c..73f08d407 100644 --- a/packages/taler-wallet-core/src/util/http.ts +++ b/packages/taler-wallet-core/src/util/http.ts @@ -36,6 +36,7 @@ import { timestampMin, timestampMax, } from "./time"; +import { TalerErrorDetails } from ".."; const logger = new Logger("http.ts"); @@ -134,29 +135,35 @@ type ResponseOrError = | { isError: false; response: T } | { isError: true; talerErrorResponse: TalerErrorResponse }; +export async function readTalerErrorResponse( + httpResponse: HttpResponse, +): Promise { + const errJson = await httpResponse.json(); + const talerErrorCode = errJson.code; + if (typeof talerErrorCode !== "number") { + throw new OperationFailedError( + makeErrorDetails( + TalerErrorCode.WALLET_RECEIVED_MALFORMED_RESPONSE, + "Error response did not contain error code", + { + requestUrl: httpResponse.requestUrl, + requestMethod: httpResponse.requestMethod, + httpStatusCode: httpResponse.status, + }, + ), + ); + } + return errJson; +} + export async function readSuccessResponseJsonOrErrorCode( httpResponse: HttpResponse, codec: Codec, ): Promise> { if (!(httpResponse.status >= 200 && httpResponse.status < 300)) { - const errJson = await httpResponse.json(); - const talerErrorCode = errJson.code; - if (typeof talerErrorCode !== "number") { - throw new OperationFailedError( - makeErrorDetails( - TalerErrorCode.WALLET_RECEIVED_MALFORMED_RESPONSE, - "Error response did not contain error code", - { - requestUrl: httpResponse.requestUrl, - requestMethod: httpResponse.requestMethod, - httpStatusCode: httpResponse.status, - }, - ), - ); - } return { isError: true, - talerErrorResponse: errJson, + talerErrorResponse: await readTalerErrorResponse(httpResponse), }; } const respJson = await httpResponse.json(); -- cgit v1.2.3