[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-core] branch master updated: endpoint / CLI for accepting
From: |
gnunet |
Subject: |
[taler-wallet-core] branch master updated: endpoint / CLI for accepting exchange ToS |
Date: |
Sat, 11 Jul 2020 10:32:22 +0200 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository wallet-core.
The following commit(s) were added to refs/heads/master by this push:
new c6d80b01 endpoint / CLI for accepting exchange ToS
c6d80b01 is described below
commit c6d80b01281a6af578fb3468698419ddd5c172f8
Author: Florian Dold <florian.dold@gmail.com>
AuthorDate: Sat Jul 11 14:02:17 2020 +0530
endpoint / CLI for accepting exchange ToS
---
src/android/index.ts | 10 ++++++++++
src/headless/taler-wallet-cli.ts | 35 +++++++++++++++++++++++++++++++++++
src/types/walletTypes.ts | 18 ++++++++++++++++++
src/wallet.ts | 15 +++++++++++++++
4 files changed, 78 insertions(+)
diff --git a/src/android/index.ts b/src/android/index.ts
index 3ed88e4b..fcdbdaa6 100644
--- a/src/android/index.ts
+++ b/src/android/index.ts
@@ -210,6 +210,16 @@ class AndroidWalletMessageHandler {
const wallet = await this.wp.promise;
return await wallet.getHistory();
}
+ case "getExchangeTos": {
+ const wallet = await this.wp.promise;
+ const exchangeBaseUrl = args.exchangeBaseUrl;
+ return wallet.getExchangeTos(exchangeBaseUrl);
+ }
+ case "setExchangeTosAccepted": {
+ const wallet = await this.wp.promise;
+ await wallet.acceptExchangeTermsOfService(args.exchangeBaseUrl,
args.acceptedEtag);
+ return {};
+ }
case "retryPendingNow": {
const wallet = await this.wp.promise;
await wallet.runPending(true);
diff --git a/src/headless/taler-wallet-cli.ts b/src/headless/taler-wallet-cli.ts
index 278489d2..838e56f6 100644
--- a/src/headless/taler-wallet-cli.ts
+++ b/src/headless/taler-wallet-cli.ts
@@ -373,6 +373,41 @@ exchangesCli
});
});
+exchangesCli
+ .subcommand("exchangesAcceptTosCmd", "accept-tos", {
+ help: "Accept terms of service.",
+ })
+ .requiredArgument("url", clk.STRING, {
+ help: "Base URL of the exchange.",
+ })
+ .requiredArgument("etag", clk.STRING, {
+ help: "ToS version tag to accept",
+ })
+ .action(async (args) => {
+ await withWallet(args, async (wallet) => {
+ await wallet.acceptExchangeTermsOfService(
+ args.exchangesAcceptTosCmd.url,
+ args.exchangesAcceptTosCmd.etag
+ );
+ });
+ });
+
+ exchangesCli
+ .subcommand("exchangesTosCmd", "tos", {
+ help: "Show terms of service.",
+ })
+ .requiredArgument("url", clk.STRING, {
+ help: "Base URL of the exchange.",
+ })
+ .action(async (args) => {
+ await withWallet(args, async (wallet) => {
+ const tosResult = await wallet.getExchangeTos(
+ args.exchangesTosCmd.url,
+ );
+ console.log(JSON.stringify(tosResult, undefined, 2));
+ });
+ });
+
const advancedCli = walletCli.subcommand("advancedArgs", "advanced", {
help:
"Subcommands for advanced operations (only use if you know what you're
doing!).",
diff --git a/src/types/walletTypes.ts b/src/types/walletTypes.ts
index d61d0469..4b6d867a 100644
--- a/src/types/walletTypes.ts
+++ b/src/types/walletTypes.ts
@@ -513,3 +513,21 @@ export interface ManualWithdrawalDetails {
*/
paytoUris: string[];
}
+
+export interface GetExchangeTosResult {
+ /**
+ * Markdown version of the current ToS.
+ */
+ tos: string;
+
+ /**
+ * Version tag of the current ToS.
+ */
+ currentEtag: string;
+
+ /**
+ * Version tag of the last ToS that the user has accepted,
+ * if any.
+ */
+ acceptedEtag: string | undefined;
+}
diff --git a/src/wallet.ts b/src/wallet.ts
index 2b804ded..e04c849d 100644
--- a/src/wallet.ts
+++ b/src/wallet.ts
@@ -72,6 +72,7 @@ import {
ExchangeListItem,
ExchangesListRespose,
ManualWithdrawalDetails,
+ GetExchangeTosResult,
} from "./types/walletTypes";
import { Logger } from "./util/logging";
@@ -500,6 +501,20 @@ export class Wallet {
}
}
+ async getExchangeTos(exchangeBaseUrl: string): Promise<GetExchangeTosResult>
{
+ const exchange = await this.updateExchangeFromUrl(exchangeBaseUrl);
+ const tos = exchange.termsOfServiceText;
+ const currentEtag = exchange.termsOfServiceLastEtag;
+ if (!tos || !currentEtag) {
+ throw Error("exchange is in invalid state");
+ }
+ return {
+ acceptedEtag: exchange.termsOfServiceAcceptedEtag,
+ currentEtag,
+ tos,
+ }
+ }
+
/**
* Get detailed balance information, sliced by exchange and by currency.
*/
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-wallet-core] branch master updated: endpoint / CLI for accepting exchange ToS,
gnunet <=