diff options
author | Marc Stibane <marc@taler.net> | 2023-12-07 00:11:42 +0100 |
---|---|---|
committer | Marc Stibane <marc@taler.net> | 2023-12-07 00:11:42 +0100 |
commit | e306950a195eaa278a43f03c7f0ca3f890c329d3 (patch) | |
tree | 3811dbddc89705c9a3b0266d8d71ea91cc526e7a | |
parent | c4533fd6de6d7edf03163f58f5d55207b0aeb4d8 (diff) | |
download | taler-ios-e306950a195eaa278a43f03c7f0ca3f890c329d3.tar.gz taler-ios-e306950a195eaa278a43f03c7f0ca3f890c329d3.tar.bz2 taler-ios-e306950a195eaa278a43f03c7f0ca3f890c329d3.zip |
getExchangeByUrl
-rw-r--r-- | TalerWallet1/Model/Model+Exchange.swift | 28 | ||||
-rw-r--r-- | TalerWallet1/Model/Model+P2P.swift | 2 | ||||
-rw-r--r-- | TalerWallet1/Model/Model+Withdraw.swift | 2 |
3 files changed, 31 insertions, 1 deletions
diff --git a/TalerWallet1/Model/Model+Exchange.swift b/TalerWallet1/Model/Model+Exchange.swift index 46aeb6c..4764116 100644 --- a/TalerWallet1/Model/Model+Exchange.swift +++ b/TalerWallet1/Model/Model+Exchange.swift @@ -93,6 +93,19 @@ fileprivate struct ListExchanges: WalletBackendFormattedRequest { } } +/// A request to get info for one exchange. +fileprivate struct GetExchangeByUrl: WalletBackendFormattedRequest { + typealias Response = Exchange + func operation() -> String { "getExchangeEntryByUrl" } + func args() -> Args { Args(exchangeBaseUrl: exchangeBaseUrl) } + + var exchangeBaseUrl: String + + struct Args: Encodable { + var exchangeBaseUrl: String + } +} + /// A request to update a single exchange. fileprivate struct UpdateExchange: WalletBackendFormattedRequest { struct Response: Decodable {} // no result - getting no error back means success @@ -158,8 +171,21 @@ extension WalletModel { } /// add a new exchange with URL to the wallet's list of known exchanges + func getExchangeByUrl(url: String) + async -> Exchange? { + do { + let request = GetExchangeByUrl(exchangeBaseUrl: url) + logger.info("query for exchange: \(url, privacy: .public)") + let response = try await sendRequest(request) + return response + } catch { + return nil + } + } + + /// add a new exchange with URL to the wallet's list of known exchanges func addExchange(url: String) - async throws { + async throws { let request = AddExchange(exchangeBaseUrl: url) logger.info("adding exchange: \(url, privacy: .public)") _ = try await sendRequest(request) diff --git a/TalerWallet1/Model/Model+P2P.swift b/TalerWallet1/Model/Model+P2P.swift index 8a0d003..bff8aeb 100644 --- a/TalerWallet1/Model/Model+P2P.swift +++ b/TalerWallet1/Model/Model+P2P.swift @@ -165,6 +165,8 @@ struct PreparePeerPushCreditResponse: Codable { let contractTerms: PeerContractTerms let amountRaw: Amount let amountEffective: Amount + let exchangeBaseUrl: String +// let peerPushCreditId: String // the dialog transaction is already created in the local DB - must either accept or delete let transactionId: String } diff --git a/TalerWallet1/Model/Model+Withdraw.swift b/TalerWallet1/Model/Model+Withdraw.swift index 8563df4..8bd558c 100644 --- a/TalerWallet1/Model/Model+Withdraw.swift +++ b/TalerWallet1/Model/Model+Withdraw.swift @@ -18,8 +18,10 @@ struct AccountRestriction: Decodable { var human_hint_i18n: String? } struct WithdrawalExchangeAccountDetails: Decodable { + var bankName: String? var paytoUri: String var transferAmount: Amount + var currencySpecification: CurrencySpecification? var creditRestrictions: [AccountRestriction]? } // MARK: - |