diff options
Diffstat (limited to 'src/cli/anastasis-cli-redux.c')
-rw-r--r-- | src/cli/anastasis-cli-redux.c | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/src/cli/anastasis-cli-redux.c b/src/cli/anastasis-cli-redux.c index dc9c7ab..e2d2e1d 100644 --- a/src/cli/anastasis-cli-redux.c +++ b/src/cli/anastasis-cli-redux.c @@ -1,6 +1,6 @@ /* This file is part of Anastasis - Copyright (C) 2020,2021 Anastasis SARL + Copyright (C) 2020,2021,2022 Anastasis SARL Anastasis is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software @@ -41,6 +41,12 @@ static struct GNUNET_CURL_RescheduleContext *rc; static struct GNUNET_CURL_Context *ctx; /** + * Application ID to include in the user attributes. + * (-a option). + */ +char *application_id; + +/** * -b option given. */ static int b_flag; @@ -146,6 +152,9 @@ action_cb (void *cls, "Redux failed with error %d: %s\n", error_code, TALER_ErrorCode_get_hint (error_code)); + json_dumpf (result_state, + stderr, + JSON_INDENT (2)); } GNUNET_SCHEDULER_shutdown (); global_ret = (TALER_EC_NONE != error_code) ? 1 : 0; @@ -309,6 +318,21 @@ run (void *cls, &rc); rc = GNUNET_CURL_gnunet_rc_create (ctx); ANASTASIS_redux_init (ctx); + /* Expand identity_attributes if -a is given explicitly and we + are at the respective step of the reduction */ + if ( (0 == strcasecmp (action, + "enter_user_attributes")) && + (NULL != application_id) && + (NULL != arguments) ) + { + json_t *attr = json_object_get (arguments, + "identity_attributes"); + if (NULL != attr) + GNUNET_assert (0 == + json_object_set_new (attr, + "application-id", + json_string (application_id))); + } ra = ANASTASIS_redux_action (prev_state, action, arguments, @@ -324,6 +348,16 @@ main (int argc, { /* the available command line options */ struct GNUNET_GETOPT_CommandLineOption options[] = { + GNUNET_GETOPT_option_string ('A', + "application", + "ID", + "set the application ID", + &application_id), + GNUNET_GETOPT_option_string ('a', + "arguments", + "JSON", + "pass a JSON string containing arguments to reducer", + &input), GNUNET_GETOPT_option_flag ('b', "backup", "use reducer to handle states for backup process", @@ -332,12 +366,6 @@ main (int argc, "restore", "use reducer to handle states for restore process", &r_flag), - GNUNET_GETOPT_option_string ('a', - "arguments", - "JSON", - "pass a JSON string containing arguments to reducer", - &input), - GNUNET_GETOPT_OPTION_END }; enum GNUNET_GenericReturnValue ret; @@ -354,6 +382,7 @@ main (int argc, options, &run, NULL); + GNUNET_free (application_id); if (GNUNET_SYSERR == ret) return 3; if (GNUNET_NO == ret) |