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