From 72cbf663952bc95888aa2187894da78725e7590c Mon Sep 17 00:00:00 2001 From: Özgür Kesim Date: Sun, 2 Oct 2022 22:51:54 +0200 Subject: WiP: added auction_brandt as extension - added an extension to handle auctions via libbrandt - /extensions/auction_brandt GET and POST handler defined - initial parsing of transcript.json implemented, yet WiP - multiple cleanups and changes to extension handling --- src/exchange/taler-exchange-httpd.c | 43 +++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src/exchange/taler-exchange-httpd.c') diff --git a/src/exchange/taler-exchange-httpd.c b/src/exchange/taler-exchange-httpd.c index d7651d79..68fc9fb7 100644 --- a/src/exchange/taler-exchange-httpd.c +++ b/src/exchange/taler-exchange-httpd.c @@ -1040,6 +1040,42 @@ handle_post_auditors (struct TEH_RequestContext *rc, root); } +/** + * Handle GET "/extensions/..." requests. + * + * @param rc request context + * @param args array of additional options + * @return MHD result code + */ +static MHD_RESULT +handle_get_extensions (struct TEH_RequestContext *rc, + const char *const args[]) +{ + const struct TALER_Extension *ext = NULL; + + if (NULL == args[0]) + { + GNUNET_break_op (0); + return r404 (rc->connection, + "/extensions/$EXTENSION"); + } + + ext = TALER_extensions_get_by_name (args[0]); + if (NULL == ext) + { + GNUNET_break_op (0); + return r404 (rc->connection, + "/extensions/$EXTENSION unknown"); + } + + if (NULL == ext->http_get_handler) + return MHD_HTTP_NOT_IMPLEMENTED; + + return ext->http_get_handler ( + rc->connection, + &args[1]); +} + /** * Handle POST "/extensions/..." requests. @@ -1299,6 +1335,13 @@ handle_mhd_request (void *cls, .nargs_is_upper_bound = true }, /* extensions endpoints */ + { + .url = "extensions", + .method = MHD_HTTP_METHOD_GET, + .handler.get = &handle_get_extensions, + .nargs = 4, /* Arbitrary upper bound */ + .nargs_is_upper_bound = true, + }, { .url = "extensions", .method = MHD_HTTP_METHOD_POST, -- cgit v1.2.3