gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis] 03/08: fix


From: gnunet
Subject: [taler-anastasis] 03/08: fix
Date: Fri, 09 Oct 2020 12:03:44 +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 525c82e59087ceeb1e6e85921aa353e374333235
Author: Dennis Neufeld <dennis.neufeld@students.bfh.ch>
AuthorDate: Wed Oct 7 10:48:05 2020 +0200

    fix
---
 src/include/anastasis_redux.h        |  4 ++++
 src/lib/anastasis_api_backup_redux.c | 38 ++++++++++++++++++++++++++++++++----
 src/lib/anastasis_api_redux.c        | 10 +++++++++-
 3 files changed, 47 insertions(+), 5 deletions(-)

diff --git a/src/include/anastasis_redux.h b/src/include/anastasis_redux.h
index 4adc474..ea811ad 100644
--- a/src/include/anastasis_redux.h
+++ b/src/include/anastasis_redux.h
@@ -43,6 +43,10 @@ extern json_t *redux_id_attr;
  */
 extern json_t *provider_list;
 
+/**
+ * Currency of chosen country
+ */
+extern char *currency;
 
 /**
  * Returns an initial ANASTASIS backup state.
diff --git a/src/lib/anastasis_api_backup_redux.c 
b/src/lib/anastasis_api_backup_redux.c
index 8fc4e09..e1e7167 100644
--- a/src/lib/anastasis_api_backup_redux.c
+++ b/src/lib/anastasis_api_backup_redux.c
@@ -249,6 +249,7 @@ static void
 go_with (struct PolicyBuilder *pb,
          const unsigned int *m_idx)
 {
+  struct TALER_Amount recovery_cost;
   unsigned int best_sel[pb->req_methods];
   unsigned int prov_sel[pb->req_methods];
 
@@ -259,17 +260,46 @@ go_with (struct PolicyBuilder *pb,
                       prov_sel,
                       0);
 
+  GNUNET_assert (GNUNET_OK ==
+                 TALER_amount_get_zero (currency,
+                                        &recovery_cost));
+  json_t *method_arr = json_array ();
   for (unsigned int i = 0; i<pb->req_methods; i++)
   {
+    json_t *method_obj = json_array_get (pb->methods,
+                                         m_idx[i]);
+    json_t *method_name = json_string_value (json_object_get (method_obj,
+                                                              "method"));
+    json_t *method_providers = json_object_get (pb->providers,
+                                                method_name);
     json_t *provider_obj = json_array_get (method_providers,
                                            best_sel[i]);
     const char *provider_name = json_string_value (json_object_get (
                                                      provider_obj,
                                                      "provider"));
-    json_object_pack ("{s:i, s:s}",
-                      "authentication_method", m_idx[i],
-                      "provider", provider_name);
+    json_t *policy_method = json_pack ("{s:i, s:s}",
+                                       "authentication_method", m_idx[i],
+                                       "provider", provider_name);
+    json_array_append_new (method_arr, policy_method);
+    struct TALER_Amount method_cost;
+    GNUNET_assert (GNUNET_OK ==
+                   TALER_string_to_amount (
+                     json_string_value (json_object_get (provider_obj,
+                                                         "method_cost")),
+                     &method_cost));
+    if (0 >
+        TALER_amount_add (&recovery_cost,
+                          &recovery_cost,
+                          &method_cost))
+    {
+      GNUNET_break (0);
+      return;
+    }
   }
+  json_t *policy = json_pack ("{s:i, s:i}",
+                              "recovery_cost",
+                              TALER_JSON_from_amount (&recovery_cost),
+                              "methods", method_arr);
 }
 
 
@@ -282,7 +312,7 @@ method_candidate (struct PolicyBuilder *pb,
 
   if (i > 0)
     start = m_idx[i - 1];
-  for (unsigned int j = start; j<pb->num_methods; j++)
+  for (unsigned int j = start; j < pb->num_methods; j++)
   {
     m_idx[i] = j;
     if (i == pb->req_methods)
diff --git a/src/lib/anastasis_api_redux.c b/src/lib/anastasis_api_redux.c
index 60180ec..003f432 100644
--- a/src/lib/anastasis_api_redux.c
+++ b/src/lib/anastasis_api_redux.c
@@ -41,6 +41,11 @@ json_t *redux_id_attr;
  */
 json_t *provider_list;
 
+/**
+ * Currency of chosen country
+ */
+char *currency;
+
 
 /**
  * Callback function FIXME: Description.
@@ -225,6 +230,9 @@ select_country (const json_t *state,
   GNUNET_assert (NULL != state);
   const char *s_mode = get_state_mode (state);
   GNUNET_assert (NULL != s_mode);
+  currency = json_string_value (json_object_get (arguments,
+                                                 "country_currency"));
+  GNUNET_assert (NULL != currency);
   GNUNET_assert (GNUNET_SYSERR !=
                  redux_id_attr_init (json_string_value (country)));
   root = json_object_get (redux_id_attr, "required_attributes");
@@ -294,7 +302,7 @@ enter_user_attributes (const json_t *state,
   json_t *root;
   char *dn;
   json_error_t error;
-  json_t *attributes = json_object_get (arguments, "identity");
+  json_t *attributes = json_object_get (arguments, "identity_attributes");
 
   GNUNET_assert (NULL != attributes);
   GNUNET_assert (NULL != state);

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