taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 9c9b8edabdf8a408da3ee15d280a5f96147c5e8b
parent f3d1231f71e004367a8c66faf70916f92fc9fc51
Author: Florian Dold <dold@taler.net>
Date:   Thu, 23 Jul 2026 02:36:27 +0200

wallet: use typed exchange client for reserve history

Diffstat:
Mpackages/taler-util/src/http-client/exchange-client.ts | 20++++++++++++++++++++
Mpackages/taler-wallet-core/src/requests.ts | 15+++++++--------
2 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/packages/taler-util/src/http-client/exchange-client.ts b/packages/taler-util/src/http-client/exchange-client.ts @@ -1578,6 +1578,26 @@ export class TalerExchangeHttpClient { } /** + * https://docs.taler.net/core/api-exchange.html#get--reserves-$RESERVE_PUB-history + */ + async getReserveHistory( + reservePub: string, + signature: string, + ): Promise<OperationOk<any>> { + const resp = await this.fetch(`reserves/${reservePub}/history`, { + headers: { + "Taler-Reserve-History-Signature": signature, + }, + }); + switch (resp.status) { + case HttpStatusCode.Ok: + return opSuccessFromHttp(resp, codecForAny()); + default: + return opUnknownHttpFailure(resp); + } + } + + /** * https://docs.taler.net/core/api-exchange.html#post--coins-$COIN_PUB-recoup */ async recoupCoin( diff --git a/packages/taler-wallet-core/src/requests.ts b/packages/taler-wallet-core/src/requests.ts @@ -263,13 +263,11 @@ import { setGlobalLogLevelFromString, validateIban, } from "@gnu-taler/taler-util"; -import { readSuccessResponseJsonOrThrow } from "@gnu-taler/taler-util/http"; import { getBalanceDetail, getBalances } from "./balance.js"; import { getMaxDepositAmount, getMaxPeerPushDebitAmount, } from "./coinSelection.js"; -import { cancelableFetch } from "./common.js"; import { addContact, deleteContact, listContacts } from "./contacts.js"; import { ConfigRecordKey, @@ -433,6 +431,7 @@ import { applyRunConfigDefaults, getDenomInfo, migrateMaterializedTransactions, + walletExchangeClient, } from "./wallet.js"; const logger = new Logger("requests.ts"); @@ -1051,12 +1050,12 @@ async function handleTestingGetReserveHistory( startOffset: 0, }); const exchangeBaseUrl = req.exchangeBaseUrl; - const url = new URL(`reserves/${req.reservePub}/history`, exchangeBaseUrl); - const resp = await cancelableFetch(wex, url, { - headers: { ["Taler-Reserve-History-Signature"]: sigResp.sig }, - }); - const historyJson = await readSuccessResponseJsonOrThrow(resp, codecForAny()); - return historyJson; + const exchangeClient = walletExchangeClient(exchangeBaseUrl, wex); + const resp = await exchangeClient.getReserveHistory( + req.reservePub, + sigResp.sig, + ); + return resp.body; } async function handleAcceptManualWithdrawal(