From 408d8e9fc896193fbcff1afd12aa04ab6d513798 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 24 Aug 2021 14:25:46 +0200 Subject: towards handling frozen refreshes --- packages/taler-wallet-core/src/util/http.ts | 33 +++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 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 68a63e124..ce507465a 100644 --- a/packages/taler-wallet-core/src/util/http.ts +++ b/packages/taler-wallet-core/src/util/http.ts @@ -24,10 +24,7 @@ /** * Imports */ -import { - OperationFailedError, - makeErrorDetails, -} from "../errors.js"; +import { OperationFailedError, makeErrorDetails } from "../errors.js"; import { Logger, Duration, @@ -68,6 +65,7 @@ export enum HttpResponseStatus { Gone = 210, NotModified = 304, PaymentRequired = 402, + NotFound = 404, Conflict = 409, } @@ -158,6 +156,33 @@ export async function readTalerErrorResponse( return errJson; } +export async function readUnexpectedResponseDetails( + httpResponse: HttpResponse, +): Promise { + const errJson = await httpResponse.json(); + const talerErrorCode = errJson.code; + if (typeof talerErrorCode !== "number") { + return makeErrorDetails( + TalerErrorCode.WALLET_RECEIVED_MALFORMED_RESPONSE, + "Error response did not contain error code", + { + requestUrl: httpResponse.requestUrl, + requestMethod: httpResponse.requestMethod, + httpStatusCode: httpResponse.status, + }, + ); + } + return makeErrorDetails( + TalerErrorCode.WALLET_UNEXPECTED_REQUEST_ERROR, + "Unexpected error code in response", + { + requestUrl: httpResponse.requestUrl, + httpStatusCode: httpResponse.status, + errorResponse: errJson, + }, + ); +} + export async function readSuccessResponseJsonOrErrorCode( httpResponse: HttpResponse, codec: Codec, -- cgit v1.2.3