diff options
Diffstat (limited to 'packages/taler-wallet-core/src/operations')
-rw-r--r-- | packages/taler-wallet-core/src/operations/exchanges.ts | 32 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/operations/refresh.ts | 2 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/operations/withdraw.ts | 37 |
3 files changed, 26 insertions, 45 deletions
diff --git a/packages/taler-wallet-core/src/operations/exchanges.ts b/packages/taler-wallet-core/src/operations/exchanges.ts index fc776c81f..629957efb 100644 --- a/packages/taler-wallet-core/src/operations/exchanges.ts +++ b/packages/taler-wallet-core/src/operations/exchanges.ts @@ -278,6 +278,7 @@ async function downloadExchangeWithWireInfo( export async function updateExchangeFromUrl( ws: InternalWalletState, baseUrl: string, + acceptedFormat?: string[], forceNow = false, ): Promise<{ exchange: ExchangeRecord; @@ -286,7 +287,7 @@ export async function updateExchangeFromUrl( const onOpErr = (e: TalerErrorDetails): Promise<void> => handleExchangeUpdateError(ws, baseUrl, e); return await guardOperationException( - () => updateExchangeFromUrlImpl(ws, baseUrl, forceNow), + () => updateExchangeFromUrlImpl(ws, baseUrl, acceptedFormat, forceNow), onOpErr, ); } @@ -411,6 +412,7 @@ async function downloadKeysInfo( async function updateExchangeFromUrlImpl( ws: InternalWalletState, baseUrl: string, + acceptedFormat?: string[], forceNow = false, ): Promise<{ exchange: ExchangeRecord; @@ -468,12 +470,28 @@ async function updateExchangeFromUrlImpl( logger.info("finished validating exchange /wire info"); - const tosDownload = await downloadExchangeWithTermsOfService( - baseUrl, - ws.http, - timeout, - "text/plain" - ); + let tosFound: ExchangeTosDownloadResult | undefined; + //Remove this when exchange supports multiple content-type in accept header + if (acceptedFormat) for (const format of acceptedFormat) { + const resp = await downloadExchangeWithTermsOfService( + baseUrl, + ws.http, + timeout, + format + ); + if (resp.tosContentType === format) { + tosFound = resp + break + } + } + // If none of the specified format was found try text/plain + const tosDownload = tosFound !== undefined ? tosFound : + await downloadExchangeWithTermsOfService( + baseUrl, + ws.http, + timeout, + "text/plain" + ); let recoupGroupId: string | undefined = undefined; diff --git a/packages/taler-wallet-core/src/operations/refresh.ts b/packages/taler-wallet-core/src/operations/refresh.ts index 85de813dc..144514e1c 100644 --- a/packages/taler-wallet-core/src/operations/refresh.ts +++ b/packages/taler-wallet-core/src/operations/refresh.ts @@ -920,7 +920,7 @@ export async function autoRefresh( exchangeBaseUrl: string, ): Promise<void> { logger.info(`doing auto-refresh check for '${exchangeBaseUrl}'`); - await updateExchangeFromUrl(ws, exchangeBaseUrl, true); + await updateExchangeFromUrl(ws, exchangeBaseUrl, undefined, true); let minCheckThreshold = timestampAddDuration( getTimestampNow(), durationFromSpec({ days: 1 }), diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts index f63723535..620ad88be 100644 --- a/packages/taler-wallet-core/src/operations/withdraw.ts +++ b/packages/taler-wallet-core/src/operations/withdraw.ts @@ -66,8 +66,6 @@ import { WALLET_BANK_INTEGRATION_PROTOCOL_VERSION, WALLET_EXCHANGE_PROTOCOL_VERSION, } from "../versions.js"; -import { stringify } from "querystring"; -import { downloadExchangeWithTermsOfService, ExchangeTosDownloadResult } from "./exchanges"; /** * Logger for this file. @@ -134,11 +132,6 @@ export interface ExchangeWithdrawDetails { termsOfServiceAccepted: boolean; /** - * Tos - */ - tosRequested: ExchangeTosDownloadResult | undefined - - /** * The exchange is trusted directly. */ isTrusted: boolean; @@ -937,7 +930,6 @@ export async function getExchangeWithdrawalInfo( ws: InternalWalletState, baseUrl: string, amount: AmountJson, - tosAcceptedFormat?: string[], ): Promise<ExchangeWithdrawDetails> { const { exchange, @@ -1004,34 +996,6 @@ export async function getExchangeWithdrawalInfo( } } - const noTosDownloaded = - exchangeDetails.termsOfServiceContentType === undefined || - exchangeDetails.termsOfServiceAcceptedEtag === undefined || - exchangeDetails.termsOfServiceText === undefined; - - let tosFound: ExchangeTosDownloadResult | undefined = noTosDownloaded ? undefined : { - tosContentType: exchangeDetails.termsOfServiceContentType!, - tosEtag: exchangeDetails.termsOfServiceAcceptedEtag!, - tosText: exchangeDetails.termsOfServiceText!, - }; - - try { - if (tosAcceptedFormat) for (const format of tosAcceptedFormat) { - const resp = await downloadExchangeWithTermsOfService( - exchangeDetails.exchangeBaseUrl, - ws.http, - { d_ms: 1000 }, - format - ); - if (resp.tosContentType === format) { - tosFound = resp - break - } - } - } catch (e) { - tosFound = undefined - } - const withdrawFee = Amounts.sub( selectedDenoms.totalWithdrawCost, selectedDenoms.totalCoinValue, @@ -1054,7 +1018,6 @@ export async function getExchangeWithdrawalInfo( walletVersion: WALLET_EXCHANGE_PROTOCOL_VERSION, withdrawFee, termsOfServiceAccepted: tosAccepted, - tosRequested: tosFound }; return ret; } |