gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cash2ecash] 01/04: implemented no_amount_to_wallet


From: gnunet
Subject: [cash2ecash] 01/04: implemented no_amount_to_wallet
Date: Fri, 17 Jan 2025 22:00:37 +0100

This is an automated email from the git hooks/post-receive script.

manuel-geissbuehler pushed a commit to branch master
in repository cash2ecash.

commit e9daf6a8cfe29f8fb653989d03df7ccba696e1ad
Author: Manuel Geissbühler <manuel@debian>
AuthorDate: Wed Jan 8 21:29:52 2025 +0100

    implemented no_amount_to_wallet
---
 src/bank/bankCommunication.hpp           |  4 ++--
 src/bank/bank_api_account_withdrawal.c   | 23 +++++++++++++----------
 src/bank/bank_lib.c                      |  5 ++++-
 src/bank/bank_lib.h                      |  2 +-
 src/bank/taler_bank_service_cash2ecash.h |  6 ++++++
 src/cash2ecash.cpp                       |  3 ++-
 6 files changed, 28 insertions(+), 15 deletions(-)

diff --git a/src/bank/bankCommunication.hpp b/src/bank/bankCommunication.hpp
index aacbd6d..8b55867 100644
--- a/src/bank/bankCommunication.hpp
+++ b/src/bank/bankCommunication.hpp
@@ -46,8 +46,8 @@ class BankCommunication{
       threadInit.detach();
   }
 
-  void withdrawalRequest(struct TALER_Amount *amount, struct TALER_Amount 
*suggestedAmount, const char **res_withdrawal_id, const char 
**res_taler_withdraw_uri){
-    std::thread 
threadWithdrawalRequest(&bankCommunicationWithdrawalRequest,amount, 
suggestedAmount, res_withdrawal_id, res_taler_withdraw_uri, 
withdrawalRequestCallback);
+  void withdrawalRequest(struct TALER_Amount *amount, struct TALER_Amount 
*suggestedAmount, bool *noAmountToWallet, const char **res_withdrawal_id, const 
char **res_taler_withdraw_uri){
+    std::thread threadWithdrawalRequest(&bankCommunicationWithdrawalRequest, 
amount, suggestedAmount, noAmountToWallet, res_withdrawal_id, 
res_taler_withdraw_uri, withdrawalRequestCallback);
     threadWithdrawalRequest.detach();
   }
 
diff --git a/src/bank/bank_api_account_withdrawal.c 
b/src/bank/bank_api_account_withdrawal.c
index 0ba16e7..06ce868 100644
--- a/src/bank/bank_api_account_withdrawal.c
+++ b/src/bank/bank_api_account_withdrawal.c
@@ -3,6 +3,7 @@
 #include <gnunet/gnunet_common.h>
 #include <jansson.h>
 #include <microhttpd.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <taler/platform.h>
 #include "taler_bank_service_cash2ecash.h"
@@ -149,6 +150,7 @@ TALER_BANK_account_withdrawal (
   const char *account_name,
   const struct TALER_Amount *amount,
   const struct TALER_Amount *suggested_amount,
+  const bool *no_amount_to_wallet,
   TALER_BANK_AccountWithdrawalCallback res_cb,
   void *res_cb_cls)
 {
@@ -157,12 +159,11 @@ TALER_BANK_account_withdrawal (
   CURL *eh;
 
   withdrawal_req = GNUNET_JSON_PACK(
-    GNUNET_JSON_pack_allow_null(
-      TALER_JSON_pack_amount("amount",
-                            amount)),
-    GNUNET_JSON_pack_allow_null (
-      TALER_JSON_pack_amount("suggested_amount",
-                            suggested_amount)));
+      GNUNET_JSON_pack_allow_null(TALER_JSON_pack_amount("amount", amount)),
+      GNUNET_JSON_pack_allow_null(
+          TALER_JSON_pack_amount("suggested_amount", suggested_amount)),
+      GNUNET_JSON_pack_allow_null(
+         GNUNET_JSON_pack_bool("no_amount_to_wallet", *no_amount_to_wallet)));
   if (NULL == withdrawal_req)
   {
     GNUNET_break (0);
@@ -511,18 +512,20 @@ handle_withdrawalID_info_finished (void *cls,
                                  &ir.details.ok.status),
        GNUNET_JSON_spec_mark_optional(
        TALER_JSON_spec_amount_any("amount",
-                                  &ir.details.ok.amount),NULL),
+                                  &ir.details.ok.amount), NULL),
        GNUNET_JSON_spec_mark_optional(
        TALER_JSON_spec_amount_any("suggested_amount",
-                                  &ir.details.ok.suggested_amount),NULL),
+                                  &ir.details.ok.suggested_amount), NULL),
+       GNUNET_JSON_spec_mark_optional(
+       GNUNET_JSON_spec_bool("no_amount_to_wallet", 
&ir.details.ok.no_amount_to_wallet), NULL),
         GNUNET_JSON_spec_string ("username",
                                 &ir.details.ok.username),
        GNUNET_JSON_spec_mark_optional(
        GNUNET_JSON_spec_string ("selected_reserve_pub",
-                                &ir.details.ok.selected_reserve_pub),NULL),
+                                &ir.details.ok.selected_reserve_pub), NULL),
        GNUNET_JSON_spec_mark_optional(
        GNUNET_JSON_spec_string ("selected_exchange_account",
-                                
&ir.details.ok.selected_exchange_account),NULL),
+                                &ir.details.ok.selected_exchange_account), 
NULL),
         GNUNET_JSON_spec_end ()
       };
 
diff --git a/src/bank/bank_lib.c b/src/bank/bank_lib.c
index 385935a..9af4def 100644
--- a/src/bank/bank_lib.c
+++ b/src/bank/bank_lib.c
@@ -36,6 +36,7 @@ static bankCommunicationInitCallback_t extInitCallback;
  */
 static bankCommunicationWithdrawalCallback_t extWithdrawalCallback;
 static struct TALER_Amount *parAmount, *parSuggestedAmount;
+static bool *parNoAmountToWallet;
 const char *par_res_withdrawal_id_string;
 const char *par_res_taler_withdraw_uri_string;
 const char **par_res_withdrawal_id;
@@ -300,6 +301,7 @@ static void runWithdrawalRequest(void *cls, char *const 
*args, const char *cfgfi
                                      "finsteraarhorn",
                                      parAmount,
                                      parSuggestedAmount,
+                                     parNoAmountToWallet,
                                      account_withdrawal_cb,
                                      NULL);
 
@@ -368,11 +370,12 @@ void 
bankCommunicationInit(bankCommunicationInitCallback_t callback) {
   bankCommunicationRun(runToken);
 }
 
-void bankCommunicationWithdrawalRequest(struct TALER_Amount *amount, struct 
TALER_Amount *suggestedAmount, const char **res_withdrawal_id, const char 
**res_taler_withdraw_uri, bankCommunicationWithdrawalCallback_t callback){
+void bankCommunicationWithdrawalRequest(struct TALER_Amount *amount, struct 
TALER_Amount *suggestedAmount, bool *noAmountToWallet, const char 
**res_withdrawal_id, const char **res_taler_withdraw_uri, 
bankCommunicationWithdrawalCallback_t callback){
   //Store the parameters globaly
   extWithdrawalCallback = callback;
   parAmount = amount;
   parSuggestedAmount = suggestedAmount;
+  parNoAmountToWallet = noAmountToWallet;
   par_res_withdrawal_id = res_withdrawal_id;
   par_res_taler_withdraw_uri = res_taler_withdraw_uri;
 
diff --git a/src/bank/bank_lib.h b/src/bank/bank_lib.h
index ce90e88..bfcda00 100644
--- a/src/bank/bank_lib.h
+++ b/src/bank/bank_lib.h
@@ -17,7 +17,7 @@ typedef void (*bankCommunicationWithdrawalIDInfoCallback_t)();
 
 
 void bankCommunicationInit(bankCommunicationInitCallback_t callback);
-void bankCommunicationWithdrawalRequest(struct TALER_Amount *amount, struct 
TALER_Amount *suggestedAmount, const char **res_withdrawal_id, const char 
**res_taler_withdraw_uri, bankCommunicationWithdrawalCallback_t callback);
+  void bankCommunicationWithdrawalRequest(struct TALER_Amount *amount, struct 
TALER_Amount *suggestedAmount, bool *noAmountToWallet, const char 
**res_withdrawal_id, const char **res_taler_withdraw_uri, 
bankCommunicationWithdrawalCallback_t callback);
 void bankCommunicationWithdrawalIDInfoRequest(const char *withdrawal_id, const 
char **res_status, bankCommunicationWithdrawalIDInfoCallback_t callback);
 void bankCommunicationWithdrawalConfirmRequest(const char *withdrawal_id, 
struct TALER_Amount *amount, bankCommunicationWithdrawalConfirmCallback_t 
callback);
 
diff --git a/src/bank/taler_bank_service_cash2ecash.h 
b/src/bank/taler_bank_service_cash2ecash.h
index 6673994..a6ba610 100644
--- a/src/bank/taler_bank_service_cash2ecash.h
+++ b/src/bank/taler_bank_service_cash2ecash.h
@@ -101,6 +101,7 @@ TALER_BANK_account_withdrawal (
   const char *account_name,
   const struct TALER_Amount *amount,
   const struct TALER_Amount *suggested_amount,
+  const bool *no_amount_to_wallet,
   TALER_BANK_AccountWithdrawalCallback res_cb,
   void *res_cb_cls);
 
@@ -255,6 +256,11 @@ struct TALER_BANK_WithdrawalIDInfoResponse
        */
       struct TALER_Amount suggested_amount;
 
+      /**
+       * If true, the wallet must not allow the user to specify an amount to 
withdraw (optional)
+       */
+      bool no_amount_to_wallet;
+
       /**
        * Account username
        */
diff --git a/src/cash2ecash.cpp b/src/cash2ecash.cpp
index 7b81a5c..dfdb2dd 100644
--- a/src/cash2ecash.cpp
+++ b/src/cash2ecash.cpp
@@ -103,7 +103,8 @@ void actionEventBankTokenDone(){
   static struct TALER_Amount amountZero;
   TALER_amount_set_zero("KUDOS", &amountZero);
   amountZero.fraction = 5000000;
-  bankCommunication.withdrawalRequest(&amountZero, NULL, &withdrawal_id, 
&taler_withdraw_uri);
+  bool noAmountToWallet = true;
+  bankCommunication.withdrawalRequest(&amountZero, NULL, &noAmountToWallet, 
&withdrawal_id, &taler_withdraw_uri);
 }
 
 void actionEventBankWithdrawalDone(){

-- 
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]