gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-merchant] branch master updated: taler://refund supp


From: gnunet
Subject: [GNUnet-SVN] [taler-merchant] branch master updated: taler://refund support
Date: Fri, 30 Aug 2019 13:54:51 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository merchant.

The following commit(s) were added to refs/heads/master by this push:
     new fb53ac5  taler://refund support
fb53ac5 is described below

commit fb53ac5a34c0e369c15ac4a43b1729fd1a23289c
Author: Florian Dold <address@hidden>
AuthorDate: Fri Aug 30 13:54:31 2019 +0200

    taler://refund support
---
 src/backend/taler-merchant-httpd_refund.c | 86 ++++++++++++++++++++++---------
 1 file changed, 63 insertions(+), 23 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_refund.c 
b/src/backend/taler-merchant-httpd_refund.c
index 0aa2359..1f80491 100644
--- a/src/backend/taler-merchant-httpd_refund.c
+++ b/src/backend/taler-merchant-httpd_refund.c
@@ -78,6 +78,61 @@ struct TMH_JsonParseContext
 
 
 /**
+ * Make a taler://refund URI
+ *
+ * @param connection MHD connection to take host and path from
+ * @param instance_id merchant's instance ID
+ * @param order_id order ID to show a refund for
+ * @returns the URI, must be freed with #GNUNET_free
+ */
+char *
+make_taler_refund_uri (struct MHD_Connection *connection,
+                       const char *instance_id,
+                       const char *order_id)
+{
+  const char *host;
+  const char *forwarded_host;
+  const char *uri_path;
+  const char *uri_instance_id;
+  char *result;
+
+  host = MHD_lookup_connection_value (connection, MHD_HEADER_KIND, "Host");
+  forwarded_host = MHD_lookup_connection_value (connection, MHD_HEADER_KIND,
+                                                "X-Forwarded-Host");
+
+  uri_path = MHD_lookup_connection_value (connection, MHD_HEADER_KIND,
+                                          "X-Forwarded-Prefix");
+  if (NULL == uri_path)
+    uri_path = "-";
+
+  if (NULL != forwarded_host)
+    host = forwarded_host;
+
+  if (0 == strcmp (instance_id, "default"))
+    uri_instance_id = "-";
+  else
+    uri_instance_id = instance_id;
+
+  if (NULL == host)
+  {
+    /* Should never happen, at last the host header should be defined */
+    GNUNET_break (0);
+    return NULL;
+  }
+
+  GNUNET_assert (NULL != order_id);
+
+  GNUNET_assert (0 < GNUNET_asprintf (&result,
+                                      "taler://refund/%s/%s/%s/%s",
+                                      host,
+                                      uri_path,
+                                      uri_instance_id,
+                                      order_id));
+  return result;
+}
+
+
+/**
  * Custom cleanup routine for a `struct TMH_JsonParseContext`.
  *
  * @param hc the `struct TMH_JsonParseContext` to clean up.
@@ -332,34 +387,19 @@ MH_handler_refund_increase (struct TMH_RequestHandler *rh,
 
   {
     int ret;
-    char *refund_pickup_url;
-    char *refund_redirect_url;
-
-    refund_pickup_url = TALER_url_absolute_mhd (connection,
-                                                "/public/refund",
-                                                "instance",
-                                                mi->id,
-                                                "order_id",
-                                                order_id,
-                                                NULL);
-    GNUNET_assert (NULL != refund_pickup_url);
-    refund_redirect_url = TALER_url_absolute_mhd (connection,
-                                                  "public/trigger-pay",
-                                                  "refund_url",
-                                                  refund_pickup_url,
-                                                  NULL);
-    GNUNET_assert (NULL != refund_redirect_url);
+    char *taler_refund_uri;
+
+    taler_refund_uri = make_taler_refund_uri (connection, mi->id, order_id);
+
     ret = TMH_RESPONSE_reply_json_pack (connection,
                                         MHD_HTTP_OK,
-                                        "{s:o, s:s, s:o}",
+                                        "{s:o, s:o, s:s}",
                                         "sig",
                                         GNUNET_JSON_from_data_auto (&sig),
-                                        "refund_redirect_url",
-                                        refund_redirect_url,
                                         "contract_terms",
-                                        contract_terms);
-    GNUNET_free (refund_pickup_url);
-    GNUNET_free (refund_redirect_url);
+                                        contract_terms,
+                                        "taler_refund_uri", taler_refund_uri);
+    GNUNET_free (taler_refund_uri);
     GNUNET_JSON_parse_free (spec);
     json_decref (root);
     return ret;

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

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