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