summaryrefslogtreecommitdiff
path: root/src/auditor/taler-auditor-httpd_coin-inconsistency-del.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/auditor/taler-auditor-httpd_coin-inconsistency-del.c')
-rw-r--r--src/auditor/taler-auditor-httpd_coin-inconsistency-del.c58
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