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