diff options
Diffstat (limited to 'src/exchange')
-rw-r--r-- | src/exchange/taler-exchange-httpd.c | 51 | ||||
-rw-r--r-- | src/exchange/taler-exchange-httpd_reserves_open.c | 11 |
2 files changed, 58 insertions, 4 deletions
diff --git a/src/exchange/taler-exchange-httpd.c b/src/exchange/taler-exchange-httpd.c index 9349a5a21..a45c9d2b4 100644 --- a/src/exchange/taler-exchange-httpd.c +++ b/src/exchange/taler-exchange-httpd.c @@ -55,8 +55,12 @@ #include "taler-exchange-httpd_recoup-refresh.h" #include "taler-exchange-httpd_refreshes_reveal.h" #include "taler-exchange-httpd_refund.h" +#include "taler-exchange-httpd_reserves_attest.h" +#include "taler-exchange-httpd_reserves_close.h" #include "taler-exchange-httpd_reserves_get.h" +#include "taler-exchange-httpd_reserves_get_attest.h" #include "taler-exchange-httpd_reserves_history.h" +#include "taler-exchange-httpd_reserves_open.h" #include "taler-exchange-httpd_reserves_purse.h" #include "taler-exchange-httpd_reserves_status.h" #include "taler-exchange-httpd_terms.h" @@ -361,14 +365,14 @@ handle_post_reserves (struct TEH_RequestContext *rc, } h[] = { { - .op = "withdraw", - .handler = &TEH_handler_withdraw - }, - { .op = "batch-withdraw", .handler = &TEH_handler_batch_withdraw }, { + .op = "withdraw", + .handler = &TEH_handler_withdraw + }, + { .op = "status", .handler = &TEH_handler_reserves_status }, @@ -381,6 +385,18 @@ handle_post_reserves (struct TEH_RequestContext *rc, .handler = &TEH_handler_reserves_purse }, { + .op = "open", + .handler = &TEH_handler_reserves_open + }, + { + .op = "attest", + .handler = &TEH_handler_reserves_attest + }, + { + .op = "close", + .handler = &TEH_handler_reserves_close + }, + { .op = NULL, .handler = NULL }, @@ -1039,6 +1055,27 @@ handle_post_auditors (struct TEH_RequestContext *rc, /** + * Handle a GET "/reserves/$RID/$XXX" request. + * + * @param rc request context + * @param args array of additional options (length: 1, just the reserve_pub) + * @return MHD result code + */ +static MHD_RESULT +handler_reserves_get3 (struct TEH_RequestContext *rc, + const char *const args[3]) +{ + if (0 == strcmp (args[2], + "attest")) + return TEH_handler_reserves_get_attest (rc, + args); + GNUNET_break_op (0); + return r404 (rc->connection, + "/reserves/$RID/*"); +} + + +/** * Handle incoming HTTP request. * * @param cls closure for MHD daemon (unused) @@ -1153,6 +1190,12 @@ handle_mhd_request (void *cls, }, { .url = "reserves", + .method = MHD_HTTP_METHOD_GET, + .handler.get = &handler_reserves_get3, + .nargs = 3 + }, + { + .url = "reserves", .method = MHD_HTTP_METHOD_POST, .handler.post = &handle_post_reserves, .nargs = 2 diff --git a/src/exchange/taler-exchange-httpd_reserves_open.c b/src/exchange/taler-exchange-httpd_reserves_open.c index cbc541205..6ad2592f2 100644 --- a/src/exchange/taler-exchange-httpd_reserves_open.c +++ b/src/exchange/taler-exchange-httpd_reserves_open.c @@ -184,12 +184,18 @@ reserve_open_transaction (void *cls, struct TEH_PurseDepositedCoin *coin = &rsc->payments[i]; bool insufficient_funds = true; + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Make coin %u known\n", + i); qs = TEH_make_coin_known (&coin->cpi, connection, &coin->known_coin_id, mhd_ret); if (qs < 0) return qs; + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Insert open deposit %u known\n", + i); qs = TEH_plugin->insert_reserve_open_deposit ( TEH_plugin->cls, &coin->cpi, @@ -215,6 +221,8 @@ reserve_open_transaction (void *cls, } if (insufficient_funds) { + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Handle insufficient funds\n"); *mhd_ret = TEH_RESPONSE_reply_coin_insufficient_funds ( connection, @@ -225,6 +233,8 @@ reserve_open_transaction (void *cls, } } + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Do reserve open\n"); qs = TEH_plugin->do_reserve_open (TEH_plugin->cls, /* inputs */ rsc->reserve_pub, @@ -263,6 +273,7 @@ reserve_open_transaction (void *cls, } if (rsc->no_funds) { + TEH_plugin->rollback (TEH_plugin->cls); *mhd_ret = TEH_RESPONSE_reply_reserve_insufficient_balance ( connection, |