[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-merchant] 03/03: update pending webhooks
From: |
gnunet |
Subject: |
[taler-merchant] 03/03: update pending webhooks |
Date: |
Tue, 24 Jan 2023 15:07:19 +0100 |
This is an automated email from the git hooks/post-receive script.
priscilla-huang pushed a commit to branch master
in repository merchant.
commit 37cd7259f99a112ee95ffb07ba40589c853ad028
Author: priscilla <priscilla.huang@efrei.net>
AuthorDate: Tue Jan 24 09:07:03 2023 -0500
update pending webhooks
---
src/backend/taler-merchant-webhook.c | 89 ++++++++++++++++++++----------------
1 file changed, 49 insertions(+), 40 deletions(-)
diff --git a/src/backend/taler-merchant-webhook.c
b/src/backend/taler-merchant-webhook.c
index 42600a5a..6d68c303 100644
--- a/src/backend/taler-merchant-webhook.c
+++ b/src/backend/taler-merchant-webhook.c
@@ -88,7 +88,7 @@ static void
shutdown_task (void *cls)
{
struct Work_response *w;
-
+
(void) cls;
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Running shutdown\n");
@@ -125,17 +125,8 @@ shutdown_task (void *cls)
/**
- * Select webhook to process.
- *
- * @param cls NULL
- */
-static void
-select_work (void *cls);
-
-//http request and delete or update in function of the http. And do select
work again
-
-/**
- * Function to call upon completion of a raw job.
+ * This function is used by the function pending_webhooks_cb. According to the
response code,
+ * we delete or update the webhook.
*
* @param cls closure
* @param response_code HTTP response code from server, 0 on hard error
@@ -154,7 +145,7 @@ handle_webhook_response (void *cls,
(void) body;
(void) body_size;
job = NULL;
- // update DB status on the webhook! (delete or update webhook)
+
if (2 == response_code / 100) /* any 2xx http status code is OK! */
{
db_plugib->delete_pending_webhook (db_plugin->cls,
@@ -191,7 +182,7 @@ handle_webhook_response (void *cls,
/**
- * Typically called by `lookup_pending_webhooks`.
+ * Typically called by `select_work`.
*
* @param cls a `json_t *` JSON array to build
* @param webhook_serial reference to the configured webhook template.
@@ -202,20 +193,21 @@ handle_webhook_response (void *cls,
* @param header of the webhook
* @param body of the webhook
*/
-// initialisation curl, and do the job
static void
-cb (void *cls,
- uint64_t webhook_serial,
- struct GNUNET_TIME_Absolute next_attempt,
- uint32_t retries,
- const char *url,
- const char *http_method,
- const char *header,
- const char *body)
+pending_webhooks_cb (void *cls,
+ uint64_t webhook_serial,
+ struct GNUNET_TIME_Absolute next_attempt,
+ uint32_t retries,
+ const char *url,
+ const char *http_method,
+ const char *header,
+ const char *body)
{
struct Work_response *w = GNUNET_new (struct Work_response);
CURL *eh;
struct curl_slist *job_headers = NULL;
+ (void) retries;
+ (void) next_attempt;
GNUNET_CONTAINER_DLL_insert (w_head,
w_tail,
@@ -231,14 +223,22 @@ cb (void *cls,
curl_easy_setopt (eh,
CURLOPT_URL,
url));
- // FIXME: convert header to job_headers!
+ /* conversion body data */
w->body = GNUNET_strdup (body);
GNUNET_assert (CURLE_OK ==
curl_easy_setopt (eh,
CURLOPT_POSTFIELDS,
w->body));
+
+ /* conversion header to job_headers data */
+ job_headers = GNUNET_strdup (header);
+ GNUNET_assert (CURLE_OK ==
+ curl_easy_setopt (eh,
+ CURLOPT_POSTFIELDS,
+ job_headers));
w->job_headers = job_headers;
+
w->job = GNUNET_CURL_job_add_raw (ctx,
eh,
job_headers,
@@ -262,7 +262,7 @@ cb (void *cls,
/**
- * Typically called by `lookup_pending_webhooks`.
+ * Typically called by `select_work`.
*
* @param cls a `json_t *` JSON array to build
* @param webhook_serial reference to the configured webhook template.
@@ -273,19 +273,23 @@ cb (void *cls,
* @param header of the webhook
* @param body of the webhook
*/
-// initialisation curl, and do the job
static void
-cb_future (void *cls,
- uint64_t webhook_serial,
- struct GNUNET_TIME_Absolute next_attempt,
- uint32_t retries,
- const char *url,
- const char *http_method,
- const char *header,
- const char *body)
+future_webhook_cb (void *cls,
+ uint64_t webhook_serial,
+ struct GNUNET_TIME_Absolute next_attempt,
+ uint32_t retries,
+ const char *url,
+ const char *http_method,
+ const char *header,
+ const char *body)
{
(void) webhook_serial;
-
+ (void) retries;
+ (void) url;
+ (void) http_method;
+ (void) header;
+ (void) body;
+
task = GNUNET_SCHEDULER_add_at (next_attempt,
&select_work,
NULL);
@@ -297,7 +301,6 @@ cb_future (void *cls,
*
* @param cls NULL
*/
-// do the action of the pending webhook
static void
select_work (void *cls)
{
@@ -315,17 +318,23 @@ select_work (void *cls)
return;
}
qs = db_plugin->lookup_pending_webhooks (db_plugin->cls,
- &cb,
+ &pending_webhooks_cb,
NULL);
switch (qs)
{
- // FIXME: handle qs
case 0:
qs = db_plugin->lookup_future_webhook (db_plugin->cls,
- &cb_future,
+ &future_webhook_cb,
NULL);
switch (qs) {
- // ...
+ case 0:
+ return;
+ case -1:
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Failed!\n");
+ global_ret = EXIT_FAILURE;
+ GNUNET_SCHEDULER_shutdown ();
+ return;
}
return;
case -1 / -2:
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.