gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis] 02/02: fix config request


From: gnunet
Subject: [taler-anastasis] 02/02: fix config request
Date: Fri, 09 Oct 2020 20:43:54 +0200

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

dennis-neufeld pushed a commit to branch master
in repository anastasis.

commit 94b4bd9e34cec3b9c70f2a44fac56e2ad18058f5
Author: Dennis Neufeld <dennis.neufeld@students.bfh.ch>
AuthorDate: Fri Oct 9 20:36:44 2020 +0200

    fix config request
---
 src/lib/anastasis_api_redux.c | 116 ++++++++++++++++++++++++++++--------------
 1 file changed, 78 insertions(+), 38 deletions(-)

diff --git a/src/lib/anastasis_api_redux.c b/src/lib/anastasis_api_redux.c
index e5d7e10..17169db 100644
--- a/src/lib/anastasis_api_redux.c
+++ b/src/lib/anastasis_api_redux.c
@@ -98,6 +98,11 @@ struct ConfigState
    * Supported methods.
    */
   json_t *methods;
+
+  /**
+   * Function to call if config request was successful.
+   */
+  ANASTASIS_ActionCallback cb;
 };
 
 /**
@@ -156,9 +161,6 @@ config_cb (void *cls,
            const char *conf_currency,
            const struct TALER_Amount *annual_fee)
 {
-  json_t *method;
-  json_t *method_arr;
-  size_t index;
   struct ConfigState *cs = cls;
 
   cs->co = NULL;
@@ -182,47 +184,84 @@ config_cb (void *cls,
                   conf_currency,
                   strlen (conf_currency));
 
-  /** FIXME: Wrong place...
-  method_arr = json_object_get (methods, "methods");
-  json_t *providers = json_object_get (cs->state, "authentication_providers");
-
-  if (NULL == providers)
-    providers = json_object ();
-  json_array_foreach (method_arr, index, method)
+  if (0 == strcmp (cs->server->backend_currency,
+                   json_string_value (json_object_get (cs->state,
+                                                       "currency"))))
   {
-    json_t *method_type = json_object_get (method, "method");
-    json_t *provider_method = json_object_get (providers,
-                                               json_string_value 
(method_type));
-    if (NULL == provider_method)
-      provider_method = json_object ();
-
-    json_t *provider_id = json_object_get (provider_method,
-                                           cs->server->backend_id);
-    if (NULL == provider_id)
+    json_t *method;
+    size_t index;
+    json_t *config = json_object ();
+    GNUNET_assert (NULL != config);
+    json_t *provider_list = json_array ();
+    GNUNET_assert (NULL != provider_list);
+    json_t *method_arr = json_object_get (methods, "methods");
+    GNUNET_assert (NULL != method_arr);
+    GNUNET_assert (0 == json_object_set_new (config,
+                                             "provider",
+                                             json_string_value (
+                                               cs->server->backend_id)));
+
+    json_array_foreach (method_arr, index, method)
     {
+      json_t *method_type = json_object_get (method, "method");
+      GNUNET_assert (NULL != method_type);
+      json_t *provider_method = json_object ();
+      GNUNET_assert (NULL != provider_method);
+      json_t *provider_id = json_object ();
+      GNUNET_assert (NULL != provider_id);
       json_t *method_cost = json_object ();
+      GNUNET_assert (NULL != method_cost);
       json_t *annual_cost = json_object ();
-
-      json_object_set_new (method_cost,
-                           "method_cost",
-                           json_object_get (method, "cost"));
-      json_object_set_new (provider_id,
-                           cs->server->backend_id,
-                           method_cost);
-      json_object_set_new (annual_cost,
-                           "annual_cost",
-                           TALER_JSON_from_amount (&cs->server->backend_cost));
-      json_object_set_new (provider_id,
-                           cs->server->backend_id,
-                           annual_cost);
-
-      json_object_set_new (provider_method,
-                           json_string_value (method_type),
-                           provider_id);
+      GNUNET_assert (NULL != annual_cost);
+
+      GNUNET_assert (0 == json_object_set_new (method_cost,
+                                               "method_cost",
+                                               json_object_get (method,
+                                                                "cost")));
+      GNUNET_assert (0 == json_object_set_new (provider_id,
+                                               cs->server->backend_id,
+                                               method_cost));
+      GNUNET_assert (0 == json_object_set_new (annual_cost,
+                                               "annual_cost",
+                                               TALER_JSON_from_amount (
+                                                 &cs->server->backend_cost)));
+      GNUNET_assert (0 == json_object_set_new (provider_id,
+                                               cs->server->backend_id,
+                                               annual_cost));
+
+      GNUNET_assert (0 == json_object_set_new (provider_method,
+                                               json_string_value (method_type),
+                                               provider_id));
+
+      GNUNET_assert (0 == json_object_set_new (config,
+                                               json_string_value ("config"),
+                                               provider_method));
+    }
+    for (unsigned int i = 0; i < servers_length; i++)
+    {
+      if (0 == strcmp (servers[i].backend_currency,
+                       json_string_value (json_object_get (cs->state,
+                                                           "currency"))))
+      {
+        json_t *provider = json_object ();
+        GNUNET_assert (NULL != provider);
+        GNUNET_assert (0 == json_object_set_new (provider,
+                                                 "provider_id",
+                                                 servers[i].backend_id));
+        GNUNET_assert (0 == json_object_set_new (provider,
+                                                 "provider_url",
+                                                 servers[i].backend_url));
+        GNUNET_assert (0 == json_array_append_new (provider_list,
+                                                   provider));
+      }
     }
-    json_object_
+    GNUNET_assert (0 == json_object_set_new (config,
+                                             "provider_list",
+                                             provider_list));
+    cs->cb (NULL,
+            ANASTASIS_EC_NONE,
+            config);
   }
-  */
 }
 
 
@@ -481,6 +520,7 @@ select_country (json_t *state,
       cs->server = &servers[i];
       cs->http_status = MHD_HTTP_OK;
       cs->state = state;
+      cs->cb = cb;
       cs->co = ANASTASIS_get_config (curl_ctx,
                                      servers[i].backend_url,
                                      config_cb,

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