gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]