diff options
Diffstat (limited to 'packages/taler-util/src/operation.ts')
-rw-r--r-- | packages/taler-util/src/operation.ts | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/packages/taler-util/src/operation.ts b/packages/taler-util/src/operation.ts index 07a216fe9..e2ab9d4e4 100644 --- a/packages/taler-util/src/operation.ts +++ b/packages/taler-util/src/operation.ts @@ -19,6 +19,7 @@ */ import { HttpResponse, + readResponseJsonOrErrorCode, readSuccessResponseJsonOrThrow, readTalerErrorResponse, } from "./http-common.js"; @@ -126,7 +127,7 @@ export async function opKnownAlternativeFailure<T extends HttpStatusCode, B>( s: T, codec: Codec<B>, ): Promise<OperationAlternative<T, B>> { - const body = await readSuccessResponseJsonOrThrow(resp, codec); + const body = (await readResponseJsonOrErrorCode(resp, codec)).response; return { type: "fail", case: s, body }; } @@ -138,22 +139,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,13 +184,15 @@ 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< ResultByMethod<TT, p>, OperationOk<any> >; + +export type RedirectResult = { redirectURL: URL } |