summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorpriscilla <priscilla.huang@efrei.net>2022-11-29 08:20:03 -0500
committerpriscilla <priscilla.huang@efrei.net>2022-11-29 08:20:27 -0500
commitad99fc41cd3059d2b954a0096304c2118ff57e11 (patch)
tree779a92ed388fdffe3bb370cb4b04b1224f974db8 /src/backend
parent99211b460908a829711df078d87044fc302d7aaf (diff)
downloadmerchant-ad99fc41cd3059d2b954a0096304c2118ff57e11.tar.gz
merchant-ad99fc41cd3059d2b954a0096304c2118ff57e11.tar.bz2
merchant-ad99fc41cd3059d2b954a0096304c2118ff57e11.zip
update
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/Makefile.am10
-rw-r--r--src/backend/taler-merchant-httpd.c54
-rw-r--r--src/backend/taler-merchant-httpd.h4
-rw-r--r--src/backend/taler-merchant-httpd_private-get-webhooks.c2
-rw-r--r--src/backend/taler-merchant-httpd_private-patch-webhooks-ID.c2
-rw-r--r--src/backend/taler-merchant-httpd_private-post-webhooks.c10
6 files changed, 68 insertions, 14 deletions
diff --git a/src/backend/Makefile.am b/src/backend/Makefile.am
index a24e80ad..de283293 100644
--- a/src/backend/Makefile.am
+++ b/src/backend/Makefile.am
@@ -36,6 +36,8 @@ taler_merchant_httpd_SOURCES = \
taler-merchant-httpd_mhd.c taler-merchant-httpd_mhd.h \
taler-merchant-httpd_private-delete-templates-ID.c \
taler-merchant-httpd_private-delete-templates-ID.h \
+ taler-merchant-httpd_private-delete-webhooks-ID.c \
+ taler-merchant-httpd_private-delete-webhooks-ID.h \
taler-merchant-httpd_private-delete-instances-ID.c \
taler-merchant-httpd_private-delete-instances-ID.h \
taler-merchant-httpd_private-delete-products-ID.c \
@@ -70,8 +72,14 @@ taler_merchant_httpd_SOURCES = \
taler-merchant-httpd_private-get-templates.h \
taler-merchant-httpd_private-get-templates-ID.c \
taler-merchant-httpd_private-get-templates-ID.h \
+ taler-merchant-httpd_private-get-webhooks.c \
+ taler-merchant-httpd_private-get-webhooks.h \
+ taler-merchant-httpd_private-get-webhooks-ID.c \
+ taler-merchant-httpd_private-get-webhooks-ID.h \
taler-merchant-httpd_private-patch-templates-ID.c \
taler-merchant-httpd_private-patch-templates-ID.h \
+ taler-merchant-httpd_private-patch-webhooks-ID.c \
+ taler-merchant-httpd_private-patch-webhooks-ID.h \
taler-merchant-httpd_private-patch-instances-ID.c \
taler-merchant-httpd_private-patch-instances-ID.h \
taler-merchant-httpd_private-patch-orders-ID-forget.c \
@@ -80,6 +88,8 @@ taler_merchant_httpd_SOURCES = \
taler-merchant-httpd_private-patch-products-ID.h \
taler-merchant-httpd_private-post-templates.c \
taler-merchant-httpd_private-post-templates.h \
+ taler-merchant-httpd_private-post-webhooks.c \
+ taler-merchant-httpd_private-post-webhooks.h \
taler-merchant-httpd_private-post-instances.c \
taler-merchant-httpd_private-post-instances.h \
taler-merchant-httpd_private-post-instances-ID-auth.c \
diff --git a/src/backend/taler-merchant-httpd.c b/src/backend/taler-merchant-httpd.c
index 95484c37..d16a55ee 100644
--- a/src/backend/taler-merchant-httpd.c
+++ b/src/backend/taler-merchant-httpd.c
@@ -34,12 +34,15 @@
#include "taler-merchant-httpd_get-orders-ID.h"
#include "taler-merchant-httpd_get-tips-ID.h"
#include "taler-merchant-httpd_mhd.h"
+#include "taler-merchant-httpd_private-delete-webhooks-ID.h"
#include "taler-merchant-httpd_private-delete-templates-ID.h"
#include "taler-merchant-httpd_private-delete-instances-ID.h"
#include "taler-merchant-httpd_private-delete-products-ID.h"
#include "taler-merchant-httpd_private-delete-orders-ID.h"
#include "taler-merchant-httpd_private-delete-reserves-ID.h"
#include "taler-merchant-httpd_private-delete-transfers-ID.h"
+#include "taler-merchant-httpd_private-get-webhooks.h"
+#include "taler-merchant-httpd_private-get-webhooks-ID.h"
#include "taler-merchant-httpd_private-get-templates.h"
#include "taler-merchant-httpd_private-get-templates-ID.h"
#include "taler-merchant-httpd_private-get-instances.h"
@@ -54,10 +57,12 @@
#include "taler-merchant-httpd_private-get-tips-ID.h"
#include "taler-merchant-httpd_private-get-tips.h"
#include "taler-merchant-httpd_private-get-transfers.h"
+#include "taler-merchant-httpd_private-patch-webhooks-ID.h"
#include "taler-merchant-httpd_private-patch-templates-ID.h"
#include "taler-merchant-httpd_private-patch-instances-ID.h"
#include "taler-merchant-httpd_private-patch-orders-ID-forget.h"
#include "taler-merchant-httpd_private-patch-products-ID.h"
+#include "taler-merchant-httpd_private-post-webhooks.h"
#include "taler-merchant-httpd_private-post-templates.h"
#include "taler-merchant-httpd_private-post-instances.h"
#include "taler-merchant-httpd_private-post-instances-ID-auth.h"
@@ -1105,6 +1110,55 @@ url_handler (void *cls,
},
{
.url_prefix = NULL
+ },
+ /* GET /webhooks: */
+ {
+ .url_prefix = "/webhooks/",
+ .method = MHD_HTTP_METHOD_GET,
+ .handler = &TMH_private_get_webhooks
+ },
+ /* POST /webhooks: */
+ {
+ .url_prefix = "/webhooks/",
+ .method = MHD_HTTP_METHOD_POST,
+ .handler = &TMH_private_post_webhooks,
+ /* allow webhook data of up to 8 MB, that should be plenty;
+ note that exceeding #GNUNET_MAX_MALLOC_CHECKED (40 MB)
+ would require further changes to the allocation logic
+ in the code... */
+ .max_upload = 1024 * 1024 * 8
+ },
+ /* GET /webhooks/$ID/: */
+ {
+ .url_prefix = "/webhooks/",
+ .method = MHD_HTTP_METHOD_GET,
+ .have_id_segment = true,
+ .allow_deleted_instance = true,
+ .handler = &TMH_private_get_webhooks_ID
+ },
+ /* DELETE /webhooks/$ID/: */
+ {
+ .url_prefix = "/webhooks/",
+ .method = MHD_HTTP_METHOD_DELETE,
+ .have_id_segment = true,
+ .allow_deleted_instance = true,
+ .handler = &TMH_private_delete_webhooks_ID
+ },
+ /* PATCH /webhooks/$ID/: */
+ {
+ .url_prefix = "/webhooks/",
+ .method = MHD_HTTP_METHOD_PATCH,
+ .have_id_segment = true,
+ .allow_deleted_instance = true,
+ .handler = &TMH_private_patch_webhooks_ID,
+ /* allow webhook data of up to 8 MB, that should be plenty;
+ note that exceeding #GNUNET_MAX_MALLOC_CHECKED (40 MB)
+ would require further changes to the allocation logic
+ in the code... */
+ .max_upload = 1024 * 1024 * 8
+ },
+ {
+ .url_prefix = NULL
}
};
struct TMH_HandlerContext *hc = *con_cls;
diff --git a/src/backend/taler-merchant-httpd.h b/src/backend/taler-merchant-httpd.h
index 5dbb0c94..e8911b32 100644
--- a/src/backend/taler-merchant-httpd.h
+++ b/src/backend/taler-merchant-httpd.h
@@ -381,7 +381,7 @@ struct TMH_RequestHandler
/**
* URL prefix the handler is for, includes the '/',
- * so "/orders", "/templates" or "/products". Does *not* include
+ * so "/orders", "/templates", "/webhooks" or "/products". Does *not* include
* "/private", that is controlled by the array in which
* the handler is defined. Must not contain any
* '/' except for the leading '/'.
@@ -390,7 +390,7 @@ struct TMH_RequestHandler
/**
* Does this request include an identifier segment
- * (product_id, reserve_pub, order_id, tip_id, template_id) in the
+ * (product_id, reserve_pub, order_id, tip_id, template_id, webhook_id) in the
* second segment?
*/
bool have_id_segment;
diff --git a/src/backend/taler-merchant-httpd_private-get-webhooks.c b/src/backend/taler-merchant-httpd_private-get-webhooks.c
index 735748e3..cda4eda9 100644
--- a/src/backend/taler-merchant-httpd_private-get-webhooks.c
+++ b/src/backend/taler-merchant-httpd_private-get-webhooks.c
@@ -29,7 +29,7 @@
* @param webhook_id ID of the webhook
*/
static void
-add_template (void *cls,
+add_webhook (void *cls,
const char *webhook_id,
const char *event_type)
{
diff --git a/src/backend/taler-merchant-httpd_private-patch-webhooks-ID.c b/src/backend/taler-merchant-httpd_private-patch-webhooks-ID.c
index af93e96a..3144687b 100644
--- a/src/backend/taler-merchant-httpd_private-patch-webhooks-ID.c
+++ b/src/backend/taler-merchant-httpd_private-patch-webhooks-ID.c
@@ -107,7 +107,7 @@ TMH_private_patch_webhooks_ID (const struct TMH_RequestHandler *rh,
{
struct TMH_MerchantInstance *mi = hc->instance;
const char *webhook_id = hc->infix;
- struct TALER_MERCHANTDB_WebhookDetails tp = {0};
+ struct TALER_MERCHANTDB_WebhookDetails wb = {0};
enum GNUNET_DB_QueryStatus qs;
struct GNUNET_JSON_Specification spec[] = {
GNUNET_JSON_spec_string ("event_type",
diff --git a/src/backend/taler-merchant-httpd_private-post-webhooks.c b/src/backend/taler-merchant-httpd_private-post-webhooks.c
index ab076924..57fa3a65 100644
--- a/src/backend/taler-merchant-httpd_private-post-webhooks.c
+++ b/src/backend/taler-merchant-httpd_private-post-webhooks.c
@@ -100,16 +100,6 @@ TMH_private_post_webhooks (const struct TMH_RequestHandler *rh,
}
- if (! TMH_url_valid (wb.url))
- {
- GNUNET_break_op (0);
- GNUNET_JSON_parse_free (spec);
- return TALER_MHD_reply_with_error (connection,
- MHD_HTTP_BAD_REQUEST,
- TALER_EC_GENERIC_PARAMETER_MALFORMED,
- "url");
- }
-
/* finally, interact with DB until no serialization error */
for (unsigned int i = 0; i<MAX_RETRIES; i++)