aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/operations')
-rw-r--r--packages/taler-wallet-core/src/operations/exchanges.ts32
-rw-r--r--packages/taler-wallet-core/src/operations/refresh.ts2
-rw-r--r--packages/taler-wallet-core/src/operations/withdraw.ts37
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;
}