gnunet-svn
[Top][All Lists]
Advanced

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

[taler-merchant] 01/02: enable use of per-instance APIs also in C API


From: gnunet
Subject: [taler-merchant] 01/02: enable use of per-instance APIs also in C API
Date: Fri, 16 Apr 2021 23:07:57 +0200

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

grothoff pushed a commit to branch master
in repository merchant.

commit 4a6f917151c9a33d22d57467d3bc110add0fe11f
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Fri Apr 16 23:07:14 2021 +0200

    enable use of per-instance APIs also in C API
---
 src/include/taler_merchant_service.h   | 57 ++++++++++++++++++++++++++++++----
 src/lib/merchant_api_delete_instance.c | 25 +++++++++------
 src/lib/merchant_api_patch_instance.c  |  9 ++++++
 3 files changed, 75 insertions(+), 16 deletions(-)

diff --git a/src/include/taler_merchant_service.h 
b/src/include/taler_merchant_service.h
index 67f544e9..b897bd2c 100644
--- a/src/include/taler_merchant_service.h
+++ b/src/include/taler_merchant_service.h
@@ -1,6 +1,6 @@
 /*
   This file is part of TALER
-  Copyright (C) 2014-2020 Taler Systems SA
+  Copyright (C) 2014-2021 Taler Systems SA
 
   TALER is free software; you can redistribute it and/or modify it under the
   terms of the GNU Affero General Public License as published by the Free 
Software
@@ -561,8 +561,10 @@ typedef void
  * Modify an existing instance in the backend.
  *
  * @param ctx the context
- * @param backend_url HTTP base URL for the backend
- * @param instance_id identity of the instance to get information about
+ * @param backend_url HTTP base URL for the backend (top-level "default" 
instance
+ *                    or base URL of an instance if @a instance_id is NULL)
+ * @param instance_id identity of the instance to modify information about; 
NULL
+ *                    if the instance is identified as part of the @a 
backend_url
  * @param accounts_length length of the @a accounts array
  * @param payto_uris URIs of the bank accounts of the merchant instance
  * @param name name of the merchant instance
@@ -573,7 +575,6 @@ typedef void
  * @param default_max_deposit_fee default maximum deposit fee merchant is 
willing to pay
  * @param default_wire_transfer_delay default wire transfer delay merchant 
will ask for
  * @param default_pay_delay default validity period for offers merchant makes
- * @param auth_token authorization token needed to access the instance, can be 
NULL
  * @param cb function to call with the
  *        backend's instances information
  * @param cb_cls closure for @a config_cb
@@ -609,6 +610,48 @@ TALER_MERCHANT_instance_patch_cancel (
   struct TALER_MERCHANT_InstancePatchHandle *iph);
 
 
+/**
+ * Handle for an operation to modify authentication settings.
+ */
+struct TALER_MERCHANT_InstanceAuthPatchHande;
+
+
+/**
+ * Modify authentication for an existing instance in the backend.
+ *
+ * @param ctx the context
+ * @param backend_url HTTP base URL for the backend (top-level "default" 
instance
+ *                    or base URL of an instance if @a instance_id is NULL)
+ * @param instance_id identity of the instance to patch the authentication 
for; NULL
+ *                    if the instance is identified as part of the @a 
backend_url
+ * @param auth_token authorization token needed to access the instance, can be 
NULL
+ *                   to swith to no (or external) authentication
+ * @param cb function to call with the backend's response
+ * @param cb_cls closure for @a config_cb
+ * @return the instances handle; NULL upon error
+ */
+struct TALER_MERCHANT_InstanceAuthPatchHandle *
+TALER_MERCHANT_instance_auth_patch (
+  struct GNUNET_CURL_Context *ctx,
+  const char *backend_url,
+  const char *instance_id,
+  const char *auth_token,
+  TALER_MERCHANT_InstancePatchCallback cb,
+  void *cb_cls);
+
+
+/**
+ * Cancel /private/auth request.  Must not be called by clients after
+ * the callback was invoked.  Afterwards, the authentication may or
+ * may not have been updated.
+ *
+ * @param iaph request to cancel.
+ */
+void
+TALER_MERCHANT_instance_auth_patch_cancel (
+  struct TALER_MERCHANT_InstanceAuthPatchHandle *iaph);
+
+
 /**
  * Handle for a GET /instances/$ID operation.
  */
@@ -769,8 +812,10 @@ typedef void
  * (i.e. for taxation).
  *
  * @param ctx the context
- * @param backend_url HTTP base URL for the backend
- * @param instance_id which instance should be deleted
+ * @param backend_url HTTP base URL for the backend (top-level "default" 
instance
+ *                    or base URL of an instance if @a instance_id is NULL)
+ * @param instance_id identity of the instance to modify information about; 
NULL
+ *                    if the instance is identified as part of the @a 
backend_url
  * @param instances_cb function to call with the
  *        backend's return
  * @param instances_cb_cls closure for @a config_cb
diff --git a/src/lib/merchant_api_delete_instance.c 
b/src/lib/merchant_api_delete_instance.c
index 4568f7e1..4ef40952 100644
--- a/src/lib/merchant_api_delete_instance.c
+++ b/src/lib/merchant_api_delete_instance.c
@@ -140,24 +140,29 @@ instance_delete (struct GNUNET_CURL_Context *ctx,
   idh->ctx = ctx;
   idh->cb = cb;
   idh->cb_cls = cb_cls;
+  if (NULL != instance_id)
   {
     char *path;
 
     GNUNET_asprintf (&path,
                      "instances/%s/private",
                      instance_id);
-    if (purge)
-      idh->url = TALER_url_join (backend_url,
-                                 path,
-                                 "purge",
-                                 "yes",
-                                 NULL);
-    else
-      idh->url = TALER_url_join (backend_url,
-                                 path,
-                                 NULL);
+    idh->url = TALER_url_join (backend_url,
+                               path,
+                               "purge",
+                               (purge) ? "yes" : NULL,
+                               NULL);
     GNUNET_free (path);
   }
+  else
+  {
+    /* backend_url is already identifying the instance */
+    idh->url = TALER_url_join (backend_url,
+                               "/private",
+                               "purge",
+                               (purge) ? "yes" : NULL,
+                               NULL);
+  }
   if (NULL == idh->url)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
diff --git a/src/lib/merchant_api_patch_instance.c 
b/src/lib/merchant_api_patch_instance.c
index 2fc8eaff..f51bb953 100644
--- a/src/lib/merchant_api_patch_instance.c
+++ b/src/lib/merchant_api_patch_instance.c
@@ -223,6 +223,7 @@ TALER_MERCHANT_instance_patch (
   iph->ctx = ctx;
   iph->cb = cb;
   iph->cb_cls = cb_cls;
+  if (NULL != instance_id)
   {
     char *path;
 
@@ -234,6 +235,13 @@ TALER_MERCHANT_instance_patch (
                                NULL);
     GNUNET_free (path);
   }
+  else
+  {
+    /* backend_url is already identifying the instance */
+    iph->url = TALER_url_join (backend_url,
+                               "/private",
+                               NULL);
+  }
   if (NULL == iph->url)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -253,6 +261,7 @@ TALER_MERCHANT_instance_patch (
     {
       GNUNET_break (0);
       json_decref (req_obj);
+      GNUNET_free (iph->url);
       GNUNET_free (iph);
       return NULL;
     }

-- 
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]