diff options
Diffstat (limited to 'src/auditor/taler-auditor-httpd_coin-inconsistency-del.c')
-rw-r--r-- | src/auditor/taler-auditor-httpd_coin-inconsistency-del.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/auditor/taler-auditor-httpd_coin-inconsistency-del.c b/src/auditor/taler-auditor-httpd_coin-inconsistency-del.c new file mode 100644 index 000000000..3f767a649 --- /dev/null +++ b/src/auditor/taler-auditor-httpd_coin-inconsistency-del.c @@ -0,0 +1,58 @@ +// +// Created by parallels on 21/03/24. +// + +#include "taler-auditor-httpd_coin-inconsistency-del.h" + +MHD_RESULT +TAH_COIN_INCONSISTENCY_handler_delete (struct TAH_RequestHandler *rh, + struct MHD_Connection *connection, + void **connection_cls, + const char *upload_data, + size_t *upload_data_size, + const char *const args[]) +{ + + MHD_RESULT res; + enum GNUNET_DB_QueryStatus qs; + + // TODO: check for null first + uint64_t row_id = atoi (args[1]); + + + if (GNUNET_SYSERR == + TAH_plugin->preflight (TAH_plugin->cls)) + { + GNUNET_break (0); + return TALER_MHD_reply_with_error (connection, + MHD_HTTP_INTERNAL_SERVER_ERROR, + TALER_EC_GENERIC_DB_SETUP_FAILED, + NULL); + } + + + // execute the transaction + qs = TAH_plugin->delete_coin_inconsistency (TAH_plugin->cls,row_id); + + if (0 > qs) + { + // goes in here if there was an error with the transaction + GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR == qs); + TALER_LOG_WARNING ("Failed to handle DELETE /coin-inconsistency/ %s\n", + args[1]); + return TALER_MHD_reply_with_error (connection, + MHD_HTTP_NOT_FOUND, + // TODO: not the correct ec + TALER_EC_AUDITOR_DEPOSIT_CONFIRMATION_SIGNATURE_INVALID, + "exchange signature invalid"); + + } + + // on success? + return TALER_MHD_REPLY_JSON_PACK (connection, + MHD_HTTP_NO_CONTENT, + GNUNET_JSON_pack_string ("status", + "COIN_INCONSISTENCY_OK")); + + return res; +}
\ No newline at end of file |