aboutsummaryrefslogtreecommitdiff
path: root/src/auditor/taler-auditor-httpd_emergency-del.c
diff options
context:
space:
mode:
authorNic Eigel <nic@eigel.ch>2024-06-24 00:08:47 +0200
committerNic Eigel <nic@eigel.ch>2024-06-24 00:08:47 +0200
commit74b23809f3e100ad7d63cd746fd5ff3a93b4fdd5 (patch)
tree84c79a84255730725c110c61054964f641b8c16d /src/auditor/taler-auditor-httpd_emergency-del.c
parented2d7f089fd071d9983d829a18774616f2a6a147 (diff)
real-time-auditor
Diffstat (limited to 'src/auditor/taler-auditor-httpd_emergency-del.c')
-rw-r--r--src/auditor/taler-auditor-httpd_emergency-del.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/auditor/taler-auditor-httpd_emergency-del.c b/src/auditor/taler-auditor-httpd_emergency-del.c
new file mode 100644
index 000000000..014190f08
--- /dev/null
+++ b/src/auditor/taler-auditor-httpd_emergency-del.c
@@ -0,0 +1,78 @@
+/*
+ This file is part of TALER
+ Copyright (C) 2024 Taler Systems SA
+
+ TALER is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+
+#include "taler-auditor-httpd_emergency-del.h"
+
+
+MHD_RESULT
+TAH_EMERGENCY_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[])
+{
+
+ enum GNUNET_DB_QueryStatus qs;
+
+ uint64_t row_id;
+
+ if (args[2] != NULL)
+ row_id = atoi (args[2]);
+ else
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_BAD_REQUEST,
+ TALER_EC_AUDITOR_RESOURCE_NOT_FOUND,
+ "row could not be found");
+
+ 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_emergency (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 /emergency/ %s\n",
+ args[1]);
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_NOT_FOUND,
+ TALER_EC_AUDITOR_RESOURCE_NOT_FOUND,
+ "row could not be found");
+
+ }
+
+ // on success?
+ return TALER_MHD_REPLY_JSON_PACK (connection,
+ MHD_HTTP_NO_CONTENT,
+ GNUNET_JSON_pack_string ("status",
+ "EMERGENCY_OK"));
+
+}