[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-merchant] branch master updated: api using template
From: |
gnunet |
Subject: |
[taler-merchant] branch master updated: api using template |
Date: |
Wed, 21 Dec 2022 15:32:06 +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 97ccd1b6 api using template
97ccd1b6 is described below
commit 97ccd1b689b0ce5980d76ffb9c5624bc7f6c6723
Author: priscilla <priscilla.huang@efrei.net>
AuthorDate: Wed Dec 21 09:31:36 2022 -0500
api using template
---
src/include/taler_merchant_service.h | 41 ++++++++
src/lib/Makefile.am | 1 +
src/lib/merchant_api_post_templates.c | 1 -
...lates.c => merchant_api_post_using_templates.c} | 116 ++++++++++-----------
4 files changed, 99 insertions(+), 60 deletions(-)
diff --git a/src/include/taler_merchant_service.h
b/src/include/taler_merchant_service.h
index 09292c18..c5bef549 100644
--- a/src/include/taler_merchant_service.h
+++ b/src/include/taler_merchant_service.h
@@ -4370,6 +4370,47 @@ void
TALER_MERCHANT_template_delete_cancel (
struct TALER_MERCHANT_TemplateDeleteHandle *tdh);
+/**
+ * Function called with the result of the POST /using-templates operation.
+ *
+ * @param cls closure
+ * @param hr HTTP response details
+ */
+typedef void
+(*TALER_MERCHANT_UsingTemplatesPostCallback)(
+ void *cls,
+ const struct TALER_MERCHANT_HttpResponse *hr);
+
+/**
+ * Make a POST /using-templates request to add an using template
+ *
+ * @param ctx the context
+ * @param backend_url HTTP base URL for the backend
+ * @param summary summary of the using template
+ * @param amount to pay given by the customer
+ * @param cb function to call with the backend's result
+ * @param cb_cls closure for @a cb
+ * @return the request handle; NULL upon error
+ */
+struct TALER_MERCHANT_UsingTemplatesPostHandle *
+TALER_MERCHANT_using_templates_post (
+ struct GNUNET_CURL_Context *ctx,
+ const char *backend_url,
+ const char *summary,
+ struct TALER_Amount amount,
+ TALER_MERCHANT_UsingTemplatesPostCallback cb,
+ void *cb_cls);
+
+
+/**
+ * Cancel POST /using-templates operation.
+ *
+ * @param utph operation to cancel
+ */
+void
+TALER_MERCHANT_using_templates_post_cancel (
+ struct TALER_MERCHANT_UsingTemplatesPostHandle *utph);
+
/* ********************* /webhooks *********************** */
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 7d212c3b..7451b24d 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -58,6 +58,7 @@ libtalermerchant_la_SOURCES = \
merchant_api_post_reserves.c \
merchant_api_post_transfers.c \
merchant_api_post_templates.c \
+ merchant_api_post_using_templates.c \
merchant_api_post_webhooks.c \
merchant_api_tip_authorize.c \
merchant_api_tip_pickup.c \
diff --git a/src/lib/merchant_api_post_templates.c
b/src/lib/merchant_api_post_templates.c
index 002896ed..300039a4 100644
--- a/src/lib/merchant_api_post_templates.c
+++ b/src/lib/merchant_api_post_templates.c
@@ -68,7 +68,6 @@ struct TALER_MERCHANT_TemplatesPostHandle
* Minor context that holds body and headers.
*/
struct TALER_CURL_PostContext post_ctx;
-
};
diff --git a/src/lib/merchant_api_post_templates.c
b/src/lib/merchant_api_post_using_templates.c
similarity index 65%
copy from src/lib/merchant_api_post_templates.c
copy to src/lib/merchant_api_post_using_templates.c
index 002896ed..278fcac8 100644
--- a/src/lib/merchant_api_post_templates.c
+++ b/src/lib/merchant_api_post_using_templates.c
@@ -17,8 +17,8 @@
If not, see <http://www.gnu.org/licenses/>
*/
/**
- * @file merchant_api_post_templates.c
- * @brief Implementation of the POST /templates request
+ * @file merchant_api_post_using_templates.c
+ * @brief Implementation of the POST /using_templates request
* of the merchant's HTTP API
* @author Priscilla HUANG
*/
@@ -36,7 +36,7 @@
/**
* Handle for a POST /templates/$ID operation.
*/
-struct TALER_MERCHANT_TemplatesPostHandle
+struct TALER_MERCHANT_UsingTemplatesPostHandle
{
/**
@@ -52,7 +52,7 @@ struct TALER_MERCHANT_TemplatesPostHandle
/**
* Function to call with the result.
*/
- TALER_MERCHANT_TemplatesPostCallback cb;
+ TALER_MERCHANT_UsingTemplatesPostCallback cb;
/**
* Closure for @a cb.
@@ -68,33 +68,31 @@ struct TALER_MERCHANT_TemplatesPostHandle
* Minor context that holds body and headers.
*/
struct TALER_CURL_PostContext post_ctx;
-
};
-
/**
* Function called when we're done processing the
- * HTTP POST /templates request.
+ * HTTP POST /using-templates request.
*
- * @param cls the `struct TALER_MERCHANT_TemplatesPostHandle`
+ * @param cls the `struct TALER_MERCHANT_UsingTemplatesPostHandle`
* @param response_code HTTP response code, 0 on error
* @param response response body, NULL if not in JSON
*/
static void
-handle_post_templates_finished (void *cls,
- long response_code,
- const void *response)
+handle_post_using_templates_finished (void *cls,
+ long response_code,
+ const void *response)
{
- struct TALER_MERCHANT_TemplatesPostHandle *tph = cls;
+ struct TALER_MERCHANT_UsingTemplatesPostHandle *utph = cls;
const json_t *json = response;
struct TALER_MERCHANT_HttpResponse hr = {
.http_status = (unsigned int) response_code,
.reply = json
};
- tph->job = NULL;
+ utph->job = NULL;
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
- "POST /templates completed with response code %u\n",
+ "POST /using-templates completed with response code %u\n",
(unsigned int) response_code);
switch (response_code)
{
@@ -129,6 +127,10 @@ handle_post_templates_finished (void *cls,
happen, we should pass the JSON reply to the
application */
break;
+ case MHD_HTTP_CONFLICT:
+ hr.ec = TALER_JSON_get_error_code (json);
+ hr.hint = TALER_JSON_get_error_hint (json);
+ break;
case MHD_HTTP_INTERNAL_SERVER_ERROR:
hr.ec = TALER_JSON_get_error_code (json);
hr.hint = TALER_JSON_get_error_hint (json);
@@ -146,84 +148,80 @@ handle_post_templates_finished (void *cls,
(int) hr.ec);
GNUNET_break_op (0);
break;
- }
- tph->cb (tph->cb_cls,
- &hr);
- TALER_MERCHANT_templates_post_cancel (tph);
+ } /* end of the switch */
+ utph->cb (utph->cb_cls,
+ &hr);
+ TALER_MERCHANT_using_templates_post_cancel (utph);
}
-struct TALER_MERCHANT_TemplatesPostHandle *
-TALER_MERCHANT_templates_post (
+struct TALER_MERCHANT_UsingTemplatesPostHandle *
+TALER_MERCHANT_using_templates_post (
struct GNUNET_CURL_Context *ctx,
const char *backend_url,
- const char *template_id,
- const char *template_description,
- const char *image,
- const json_t *template_contract,
- TALER_MERCHANT_TemplatesPostCallback cb,
+ const char *summary,
+ struct TALER_Amount amount,
+ TALER_MERCHANT_UsingTemplatesPostCallback cb,
void *cb_cls)
{
- struct TALER_MERCHANT_TemplatesPostHandle *tph;
+ struct TALER_MERCHANT_UsingTemplatesPostHandle *utph;
json_t *req_obj;
req_obj = GNUNET_JSON_PACK (
- GNUNET_JSON_pack_string ("template_id",
- template_id),
- GNUNET_JSON_pack_string ("template_description",
- template_description),
- GNUNET_JSON_pack_string ("image",
- image),
- GNUNET_JSON_pack_object_incref ("template_contract",
- (json_t *) template_contract));
- tph = GNUNET_new (struct TALER_MERCHANT_TemplatesPostHandle);
- tph->ctx = ctx;
- tph->cb = cb;
- tph->cb_cls = cb_cls;
- tph->url = TALER_url_join (backend_url,
- "private/templates",
+ GNUNET_JSON_pack_allow_null (
+ GNUNET_JSON_pack_string ("summary",
+ summary)),
+ GNUNET_JSON_pack_allow_null (
+ TALER_JSON_pack_amount ("amount",
+ &amount)));
+ utph = GNUNET_new (struct TALER_MERCHANT_UsingTemplatesPostHandle);
+ utph->ctx = ctx;
+ utph->cb = cb;
+ utph->cb_cls = cb_cls;
+ utph->url = TALER_url_join (backend_url,
+ "/templates",
NULL);
- if (NULL == tph->url)
+ if (NULL == utph->url)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Could not construct request URL.\n");
json_decref (req_obj);
- GNUNET_free (tph);
+ GNUNET_free (utph);
return NULL;
}
{
CURL *eh;
- eh = TALER_MERCHANT_curl_easy_get_ (tph->url);
+ eh = TALER_MERCHANT_curl_easy_get_ (utph->url);
GNUNET_assert (GNUNET_OK ==
- TALER_curl_easy_post (&tph->post_ctx,
+ TALER_curl_easy_post (&utph->post_ctx,
eh,
req_obj));
json_decref (req_obj);
- tph->job = GNUNET_CURL_job_add2 (ctx,
+ utph->job = GNUNET_CURL_job_add2 (ctx,
eh,
- tph->post_ctx.headers,
- &handle_post_templates_finished,
- tph);
- GNUNET_assert (NULL != tph->job);
+ utph->post_ctx.headers,
+ &handle_post_using_templates_finished,
+ utph);
+ GNUNET_assert (NULL != utph->job);
}
- return tph;
+ return utph;
}
void
-TALER_MERCHANT_templates_post_cancel (
- struct TALER_MERCHANT_TemplatesPostHandle *tph)
+TALER_MERCHANT_using_templates_post_cancel (
+ struct TALER_MERCHANT_UsingTemplatesPostHandle *utph)
{
- if (NULL != tph->job)
+ if (NULL != utph->job)
{
- GNUNET_CURL_job_cancel (tph->job);
- tph->job = NULL;
+ GNUNET_CURL_job_cancel (utph->job);
+ utph->job = NULL;
}
- TALER_curl_easy_post_finished (&tph->post_ctx);
- GNUNET_free (tph->url);
- GNUNET_free (tph);
+ TALER_curl_easy_post_finished (&utph->post_ctx);
+ GNUNET_free (utph->url);
+ GNUNET_free (utph);
}
-/* end of merchant_api_post_templates.c */
+/* end of merchant_api_post_using_templates.c */
--
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: api using template,
gnunet <=