[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-merchant] branch master updated: pending webhook update
From: |
gnunet |
Subject: |
[taler-merchant] branch master updated: pending webhook update |
Date: |
Thu, 26 Jan 2023 11:49:41 +0100 |
This is an automated email from the git hooks/post-receive script.
priscilla-huang pushed a commit to branch master
in repository merchant.
The following commit(s) were added to refs/heads/master by this push:
new 23826f92 pending webhook update
23826f92 is described below
commit 23826f925e94ea021f3ece175917d2240d9601c8
Author: priscilla <priscilla.huang@efrei.net>
AuthorDate: Thu Jan 26 05:49:12 2023 -0500
pending webhook update
---
...hant-httpd_private-delete-pending-webhooks-ID.c | 70 -------------------
...r-merchant-httpd_private-get-pending-webhooks.c | 79 ----------------------
src/backend/taler-merchant-webhook.c | 43 +++++++-----
src/backend/taler-merchant-webhook.h | 39 +++++++++++
4 files changed, 65 insertions(+), 166 deletions(-)
diff --git
a/src/backend/taler-merchant-httpd_private-delete-pending-webhooks-ID.c
b/src/backend/taler-merchant-httpd_private-delete-pending-webhooks-ID.c
deleted file mode 100644
index 16b7e3ce..00000000
--- a/src/backend/taler-merchant-httpd_private-delete-pending-webhooks-ID.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- This file is part of TALER
- (C) 2023 Taler Systems SA
-
- TALER is free software; you can redistribute it and/or modify it under the
- terms of the GNU Affero 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/>
-*/
-/**
- * @file taler-merchant-httpd_private-delete-pending-webhooks-ID.c
- * @brief implement DELETE /pending webhooks/$ID
- * @author Priscilla HUANG
- */
-#include "platform.h"
-#include "taler-merchant-httpd_private-delete-pending-webhooks-ID.h"
-#include <taler/taler_json_lib.h>
-
-
-MHD_RESULT
-TMH_private_delete_pending_webhooks_ID (const struct TMH_RequestHandler *rh,
- struct MHD_Connection *connection,
- struct TMH_HandlerContext *hc)
-{
- struct TMH_MerchantInstance *mi = hc->instance;
- enum GNUNET_DB_QueryStatus qs;
-
- (void) rh;
- GNUNET_assert (NULL != mi);
- GNUNET_assert (NULL != hc->infix);
- qs = TMH_db->delete_pending_webhook (TMH_db->cls,
- mi->settings.id,
- hc->infix);
- switch (qs)
- {
- case GNUNET_DB_STATUS_HARD_ERROR:
- return TALER_MHD_reply_with_error (connection,
- MHD_HTTP_INTERNAL_SERVER_ERROR,
- TALER_EC_GENERIC_DB_STORE_FAILED,
- "delete_pending_webhook");
- case GNUNET_DB_STATUS_SOFT_ERROR:
- GNUNET_break (0);
- return TALER_MHD_reply_with_error (connection,
- MHD_HTTP_INTERNAL_SERVER_ERROR,
-
TALER_EC_GENERIC_INTERNAL_INVARIANT_FAILURE,
- "delete_pending_webhook (soft)");
- case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
- return TALER_MHD_reply_with_error (connection,
- MHD_HTTP_NOT_FOUND,
-
TALER_EC_MERCHANT_GENERIC_PENDING_WEBHOOK_UNKNOWN,
- hc->infix);
- case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
- return TALER_MHD_reply_static (connection,
- MHD_HTTP_NO_CONTENT,
- NULL,
- NULL,
- 0);
- }
- GNUNET_assert (0);
- return MHD_NO;
-}
-
-
-/* end of taler-merchant-httpd_private-delete-pending-webhooks-ID.c */
diff --git a/src/backend/taler-merchant-httpd_private-get-pending-webhooks.c
b/src/backend/taler-merchant-httpd_private-get-pending-webhooks.c
deleted file mode 100644
index d5160476..00000000
--- a/src/backend/taler-merchant-httpd_private-get-pending-webhooks.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- This file is part of TALER
- (C) 2023 Taler Systems SA
-
- TALER is free software; you can redistribute it and/or modify it under the
- terms of the GNU Affero 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/>
-*/
-/**
- * @file taler-merchant-httpd_private-get-pending-webhooks.c
- * @brief implement GET /pending webhooks
- * @author Priscilla HUANG
- */
-#include "platform.h"
-#include "taler-merchant-httpd_private-get-pending-webhooks.h"
-
-/**
- * Add pending webhook details to our JSON array.
- *
- * @param cls a `json_t *` JSON array to build
- * @param webhook_serial reference of the webhook
- * @param next_attempt when will this hook be attempted next
- */
-static void
-add_pending_webhook (void *cls,
- uint64_t *webhook_serial,
- struct GNUNET_TIME_Absolute *next_attempt)
-{
- json_t *pa = cls;
-
- GNUNET_assert (0 ==
- json_array_append_new (
- pa,
- GNUNET_JSON_PACK (
- GNUNET_JSON_pack_uint64 ("webhook_serial",
- webhook_serial),
- GNUNET_JSON_pack_string ("next_attempt",
- next_attempt)
- )));
-}
-
-
-MHD_RESULT
-TMH_private_get_pending_webhooks (const struct TMH_RequestHandler *rh,
- struct MHD_Connection *connection,
- struct TMH_HandlerContext *hc)
-{
- json_t *pa;
- enum GNUNET_DB_QueryStatus qs;
-
- pa = json_array ();
- GNUNET_assert (NULL != pa);
- qs = TMH_db->lookup_pending_webhooks (TMH_db->cls,
- &add_pending_webhook,
- pa);
- if (0 > qs)
- {
- GNUNET_break (0);
- json_decref (pa);
- return TALER_MHD_reply_with_error (connection,
- MHD_HTTP_INTERNAL_SERVER_ERROR,
- TALER_EC_GENERIC_DB_FETCH_FAILED,
- NULL);
- }
- return TALER_MHD_REPLY_JSON_PACK (connection,
- MHD_HTTP_OK,
- GNUNET_JSON_pack_array_steal ("webhooks",
- pa));
-}
-
-
-/* end of taler-merchant-httpd_private-get-pending-webhooks.c */
diff --git a/src/backend/taler-merchant-webhook.c
b/src/backend/taler-merchant-webhook.c
index 6d68c303..17e56bb2 100644
--- a/src/backend/taler-merchant-webhook.c
+++ b/src/backend/taler-merchant-webhook.c
@@ -125,7 +125,7 @@ shutdown_task (void *cls)
/**
- * This function is used by the function pending_webhooks_cb. According to the
response code,
+ * This function is used by the function `pending_webhooks_cb`. According to
the response code,
* we delete or update the webhook.
*
* @param cls closure
@@ -144,7 +144,6 @@ handle_webhook_response (void *cls,
(void) body;
(void) body_size;
- job = NULL;
if (2 == response_code / 100) /* any 2xx http status code is OK! */
{
@@ -161,6 +160,9 @@ handle_webhook_response (void *cls,
case MHD_HTTP_INTERNAL_SERVER_ERROR:
next_attempt = GNUNET_TIME_UNIT_MINUTES;
break;
+ case MHD_HTTP_FORBIDDEN:
+ next_attempt = GNUNET_TIME_UNIT_MINUTES;
+ break;
default:
next_attempt = GNUNET_TIME_UNIT_HOURS;
break;
@@ -305,6 +307,7 @@ static void
select_work (void *cls)
{
enum GNUNET_DB_QueryStatus qs;
+ struct GNUNET_TIME_Relative next_attempt;
(void) cls;
task = NULL;
@@ -322,28 +325,35 @@ select_work (void *cls)
NULL);
switch (qs)
{
- case 0:
+ case GNUNET_BD_STATUS_HARD_ERROR:
+ case GNUNET_BD_STATUS_SOFT_ERROR:
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Failed!\n");
+ global_ret = EXIT_FAILURE;
+ GNUNET_SCHEDULER_shutdown ();
+ return;
+ case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
qs = db_plugin->lookup_future_webhook (db_plugin->cls,
&future_webhook_cb,
NULL);
switch (qs) {
- case 0:
- return;
- case -1:
+ case GNUNET_BD_STATUS_HARD_ERROR:
+ case GNUNET_BD_STATUS_SOFT_ERROR:
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Failed!\n");
global_ret = EXIT_FAILURE;
GNUNET_SCHEDULER_shutdown ();
- return;
+ return;
+ case GNUNET_DB_STATUS_ONE_RESULT:
+ return;
+ case GNUNET_DB_STATUS_NO_RESULT:
+ /* wait 5 min */
+ struct GNUNET_TIME_Relative rel = GNUNET_TIME_relative_multiply
(GNUNET_TIME_UNIT_MINUTES, 5);
+ task = GNUNET_SCHEDULER_add_delayed (rel,
+ &select_work,
+ NULL);
+ return;
}
- return;
- case -1 / -2:
- // shutdown.
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Failed!\n");
- global_ret = EXIT_FAILURE;
- GNUNET_SCHEDULER_shutdown ();
- return;
default:
return; // wait for completion, then select more work.
}
@@ -404,8 +414,7 @@ run (void *cls,
/**
- * The main function of the taler-exchange-transfer.
- *
+ * The main function of the taler-merchant-webhook
* @param argc number of arguments from the command line
* @param argv command line arguments
* @return 0 ok, 1 on error
diff --git a/src/backend/taler-merchant-webhook.h
b/src/backend/taler-merchant-webhook.h
new file mode 100644
index 00000000..bfb732f5
--- /dev/null
+++ b/src/backend/taler-merchant-webhook.h
@@ -0,0 +1,39 @@
+/*
+ This file is part of TALER
+ Copyright (C) 2023 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/>
+*/
+
+/**
+ * @file taler-merchant-webhook.h
+ * @brief logic to preload and serve static files
+ * @author Priscilla HUANG
+ */
+#ifndef TALER_MERCHANT_WEBHOOK_H
+#define TALER_MERCHANT_WEBHOOK_H
+
+#include <microhttpd.h>
+#include "taler-merchant-httpd.h"
+
+/**
+ * The main function of the taler-merchant-webhook
+ * @param argc number of arguments from the command line
+ * @param argv command line arguments
+ * @return 0 ok, 1 on error
+ */
+int
+main (int argc,
+ char *const *argv);
+
+
+#endif
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-merchant] branch master updated: pending webhook update,
gnunet <=