diff options
author | Christian Grothoff <christian@grothoff.org> | 2022-04-23 12:34:48 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2022-04-23 12:34:48 +0200 |
commit | 132359a4440e07177df4afe596be4b16270a47d8 (patch) | |
tree | b964765909b49bddc54f0d2a06818a3da080f80f /src/lib/exchange_api_purses_get.c | |
parent | a72337a5f39b4e826055974fbc5a3261759ebbec (diff) | |
download | exchange-132359a4440e07177df4afe596be4b16270a47d8.tar.xz |
add purses-get to build
Diffstat (limited to 'src/lib/exchange_api_purses_get.c')
-rw-r--r-- | src/lib/exchange_api_purses_get.c | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/src/lib/exchange_api_purses_get.c b/src/lib/exchange_api_purses_get.c index 263c6a1cc..b3cb7e662 100644 --- a/src/lib/exchange_api_purses_get.c +++ b/src/lib/exchange_api_purses_get.c @@ -94,6 +94,7 @@ handle_purse_get_finished (void *cls, break; case MHD_HTTP_OK: { + // FIXME: check exchange signature! struct GNUNET_JSON_Specification spec[] = { GNUNET_JSON_spec_timestamp ("merge_timestamp", &dr.details.success.merge_timestamp), @@ -163,15 +164,15 @@ struct TALER_EXCHANGE_PurseGetHandle * TALER_EXCHANGE_purse_get ( struct TALER_EXCHANGE_Handle *exchange, const struct TALER_PurseContractPrivateKeyP *purse_priv, - struct GNUNET_TIME_Relative merge_timeout, - struct GNUNET_TIME_Relative deposit_timeout, + struct GNUNET_TIME_Relative timeout, + bool wait_for_merge, TALER_EXCHANGE_PurseGetCallback cb, void *cb_cls) { struct TALER_EXCHANGE_PurseGetHandle *pgh; CURL *eh; struct TALER_PurseContractPublicKeyP purse_pub; - char arg_str[sizeof (purse_pub) * 2 + 48]; + char arg_str[sizeof (purse_pub) * 2 + 64]; if (GNUNET_YES != TEAH_handle_is_ready (exchange)) @@ -188,18 +189,33 @@ TALER_EXCHANGE_purse_get ( { char cpub_str[sizeof (purse_pub) * 2]; char *end; + char timeout_str[32]; end = GNUNET_STRINGS_data_to_string (&purse_pub, sizeof (purse_pub), cpub_str, sizeof (cpub_str)); *end = '\0'; - GNUNET_snprintf (arg_str, - sizeof (arg_str), - "/purses/%s", - cpub_str); + GNUNET_snprintf (timeout_str, + sizeof (timeout_str), + "%llu", + (unsigned long long) + (timeout.rel_value_us + / GNUNET_TIME_UNIT_MILLISECONDS.rel_value_us)); + if (GNUNET_TIME_relative_is_zero (timeout)) + GNUNET_snprintf (arg_str, + sizeof (arg_str), + "/purses/%s/%s", + cpub_str, + wait_for_merge ? "merge" : "deposit"); + else + GNUNET_snprintf (arg_str, + sizeof (arg_str), + "/purses/%s/%s?timeout_ms=%s", + cpub_str, + wait_for_merge ? "merge" : "deposit", + timeout_str); } - pgh->url = TEAH_path_to_url (exchange, arg_str); if (NULL == pgh->url) |