gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]