gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis-gtk] 03/03: work on initial policy


From: gnunet
Subject: [taler-anastasis-gtk] 03/03: work on initial policy
Date: Mon, 28 Sep 2020 15:19:50 +0200

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

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

commit 742f9a7614806951ff3a8fb6a57462344e940d03
Author: Dennis Neufeld <dennis.neufeld@students.bfh.ch>
AuthorDate: Mon Sep 28 15:18:10 2020 +0200

    work on initial policy
---
 src/anastasis/Makefile.am            |   1 +
 src/anastasis/anastasis-gtk_backup.c | 101 +++++++++++++++++++++++++++--------
 2 files changed, 81 insertions(+), 21 deletions(-)

diff --git a/src/anastasis/Makefile.am b/src/anastasis/Makefile.am
index 56d9ca9..34fc75b 100644
--- a/src/anastasis/Makefile.am
+++ b/src/anastasis/Makefile.am
@@ -24,6 +24,7 @@ anastasis_gtk_LDADD = \
   -lgnunetutil \
   -lgnunetcurl \
   -ljansson \
+  -ltalerjson \
   -lanastasisrest \
   -lanastasisredux \
   $(INTLLIBS)
diff --git a/src/anastasis/anastasis-gtk_backup.c 
b/src/anastasis/anastasis-gtk_backup.c
index 9a48948..bc5c156 100644
--- a/src/anastasis/anastasis-gtk_backup.c
+++ b/src/anastasis/anastasis-gtk_backup.c
@@ -27,6 +27,7 @@
 #include <gnunet/platform.h>
 #include <gnunet/gnunet_util_lib.h>
 #include <gnunet-gtk/gnunet_gtk.h>
+#include <taler/taler_json_lib.h>
 #include <gtk/gtk.h>
 #include <anastasis-gtk/anastasis-gtk_helper.h>
 #include <jansson.h>
@@ -43,34 +44,34 @@ struct ServerInfo
   char *backend_url;
 
   /**
-   * label of the anastasis backend.
+   * id of the anastasis backend.
    */
-  const char *backend_label;
+  char *backend_id;
 
   /**
-   * supported methods of the anastasis backend.
+   * label of the anastasis backend.
    */
-  char *backend_methods;
+  char *backend_name;
 
   /**
-   * server salt of the anastasis backend.
+   * currrency used by the anastasis backend.
    */
-  const struct ANASTASIS_CRYPTO_PowSalt *backend_salt;
+  char *backend_currency;
 
   /**
-   * insurance of the anastasis backend.
+   * supported methods of the anastasis backend.
    */
-  const struct TALER_Amount *backend_insurance;
+  json_t *backend_methods;
 
   /**
-   * cost of using the anastasis backend.
+   * insurance of the anastasis backend.
    */
-  const struct TALER_Amount *backend_cost;
+  struct TALER_Amount backend_insurance;
 
   /**
-   * user identifier derived from user data and backend salt
+   * cost of using the anastasis backend.
    */
-  struct ANASTASIS_CRYPTO_UserIdentifierP *user_id;
+  struct TALER_Amount backend_cost;
 };
 
 /**
@@ -99,6 +100,16 @@ struct ConfigState
   json_t *methods;
 };
 
+/**
+ * Information about the servers.
+ */
+static struct ServerInfo *servers;
+
+/**
+ * Amount of servers.
+ */
+static unsigned int servers_length = 0;
+
 guint g_signal_question;
 guint g_signal_sms;
 guint g_signal_email;
@@ -936,12 +947,12 @@ config_cb (void *cls,
            const struct TALER_Amount *annual_fee)
 {
      json_t *method;
+     json_t *method_arr;
      size_t index;
      struct ConfigState *cs = cls;
-     json_t *method_arr = json_object_get (methods, "methods");
 
      cs->co = NULL;
-     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                "At %s:%d url is %s\n", __FILE__, __LINE__,
                cs->server->backend_url);
      if (http_status != cs->http_status)
@@ -951,8 +962,15 @@ config_cb (void *cls,
                          http_status,
                          __FILE__,
                          __LINE__);
-          //return;
+          return;
      }
+     cs->server->backend_methods = methods;
+     cs->server->backend_cost = *annual_fee;
+     cs->server->backend_currency = GNUNET_malloc (strlen (conf_currency));
+     GNUNET_strlcpy (cs->server->backend_currency,
+                     conf_currency,
+                     strlen (conf_currency));
+     method_arr = json_object_get (methods, "methods");
      json_array_foreach (method_arr, index, method)
      {
           const char *method_str = json_string_value (
@@ -988,6 +1006,7 @@ init_b_policy (json_t *state)
           GList *grandchildren, *inner_iter;
           grandchildren = gtk_container_get_children (GTK_CONTAINER 
(iter->data));
           json_t *argument = json_object ();
+          json_t *provider_arr = json_array ();
           unsigned int index = 0;
           if (GTK_IS_BOX (iter->data))
                for (inner_iter = grandchildren; inner_iter != NULL; inner_iter 
= g_list_next (inner_iter))
@@ -996,7 +1015,7 @@ init_b_policy (json_t *state)
                     if (GTK_IS_LABEL (inner_iter->data))
                     {
                          const char *text = gtk_label_get_text (GTK_LABEL 
(inner_iter->data));
-                         
+
                          // check method type
                          if (index == 0)
                          {
@@ -1060,6 +1079,32 @@ init_b_policy (json_t *state)
                     }
                     index++;
                }
+          const char *method_type = json_string_value (json_object_get 
(argument, "method"));
+          for (unsigned int i = 0; i < servers_length; i++)
+          {
+               size_t index2;
+               json_t *method;
+               json_t *method_arr = json_object_get 
(servers[i].backend_methods, "methods");
+               json_array_foreach (method_arr, index2, method)
+               {
+                    if (0 == strcmp (method_type, 
+                                     json_string_value (json_object_get 
(method, "method"))))
+                    {
+                         const char *method_cost = json_string_value 
(json_object_get (method, "cost"));
+                         json_t *provider = json_pack ("{s:s, s:s, s:s, s:s, 
s:s, s:o}",
+                                                       "provider-id", 
servers[i].backend_id,
+                                                       "provider-url", 
servers[i].backend_url,
+                                                       "provider-name", 
servers[i].backend_name,
+                                                       "currency", 
servers[i].backend_currency,
+                                                       "method_cost", 
method_cost,
+                                                       "annual_cost", 
+                                                       TALER_JSON_from_amount 
(&servers[i].backend_cost));
+                         json_array_append_new (provider_arr, provider);
+                         break;
+                    }
+               }
+          }
+          json_object_set_new (argument, "providers", provider_arr);
           json_array_append_new (argument_arr, argument);
           g_list_free (grandchildren);
      }
@@ -1087,19 +1132,33 @@ init_b_auth_methods (json_t *state)
 
      json_array_foreach (provider_list, index, provider)
      {
-          struct ConfigState *cs = GNUNET_new (struct ConfigState);
           struct ServerInfo *server = GNUNET_new (struct ServerInfo);
           const char *url = json_string_value (json_object_get (provider, 
"provider-url"));
+          const char *provider_name = json_string_value (json_object_get 
(provider, "provider-name"));
+          const char *provider_id = json_string_value (json_object_get 
(provider, "provider-id"));
           GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                     "Url is: %s\n", url);
-          server->backend_url = GNUNET_malloc (strlen (url));
+          server->backend_url = GNUNET_malloc (strlen (url) + 1);
           GNUNET_strlcpy (server->backend_url,
                           url,
-                          strlen (url));
-          cs->server = server;
+                          strlen (url) + 1);
+          server->backend_name = GNUNET_malloc (strlen (provider_name) + 1);
+          GNUNET_strlcpy (server->backend_name,
+                          provider_name,
+                          strlen (provider_name) + 1);
+          server->backend_id = GNUNET_malloc (strlen (provider_id) + 1);
+          GNUNET_strlcpy (server->backend_id,
+                          provider_id,
+                          strlen (provider_id) + 1);
+          GNUNET_array_append (servers, servers_length, *server);
+     }
+     for (unsigned int i = 0; i < servers_length; i++)
+     {
+          struct ConfigState *cs = GNUNET_new (struct ConfigState);
+          cs->server = &servers[i];
           cs->http_status = MHD_HTTP_OK;
           cs->co = ANASTASIS_get_config (ctx,
-                                         url,
+                                         servers[i].backend_url,
                                          config_cb,
                                          cs);
           if (NULL == cs->co)

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