gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis] branch master updated: add delete_challenge transition


From: gnunet
Subject: [taler-anastasis] branch master updated: add delete_challenge transition to reducer
Date: Sun, 04 Jul 2021 00:15:34 +0200

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

grothoff pushed a commit to branch master
in repository anastasis.

The following commit(s) were added to refs/heads/master by this push:
     new 1c66da3  add delete_challenge transition to reducer
1c66da3 is described below

commit 1c66da32ebcfd5d449d681f247b0ba274e9d7601
Author: Christian Grothoff <grothoff@gnunet.org>
AuthorDate: Sun Jul 4 00:15:28 2021 +0200

    add delete_challenge transition to reducer
---
 src/reducer/anastasis_api_backup_redux.c | 109 ++++++++++++++++++++++++++++++-
 1 file changed, 108 insertions(+), 1 deletion(-)

diff --git a/src/reducer/anastasis_api_backup_redux.c 
b/src/reducer/anastasis_api_backup_redux.c
index ce214e8..72c8f27 100644
--- a/src/reducer/anastasis_api_backup_redux.c
+++ b/src/reducer/anastasis_api_backup_redux.c
@@ -1967,7 +1967,7 @@ add_policy (json_t *state,
 
 /**
  * DispatchHandler/Callback function which is called for a
- * "del_policy" action.
+ * "delete_policy" action.
  *
  * @param state state to operate on
  * @param arguments arguments to use for operation on state
@@ -2030,6 +2030,108 @@ del_policy (json_t *state,
 }
 
 
+/* ******************** del_challenge ******************* */
+
+
+/**
+ * DispatchHandler/Callback function which is called for a
+ * "delete_challenge" action.
+ *
+ * @param state state to operate on
+ * @param arguments arguments to use for operation on state
+ * @param cb callback to call during/after operation
+ * @param cb_cls callback closure
+ * @return NULL
+ */
+static struct ANASTASIS_ReduxAction *
+del_challenge (json_t *state,
+               const json_t *arguments,
+               ANASTASIS_ActionCallback cb,
+               void *cb_cls)
+{
+  const json_t *pidx;
+  const json_t *cidx;
+  size_t index;
+  json_t *policy_arr;
+  json_t *policy;
+  json_t *method_arr;
+
+  if (NULL == arguments)
+  {
+    ANASTASIS_redux_fail_ (cb,
+                           cb_cls,
+                           TALER_EC_ANASTASIS_REDUCER_INPUT_INVALID,
+                           "arguments missing");
+    return NULL;
+  }
+  pidx = json_object_get (arguments,
+                          "policy_index");
+  cidx = json_object_get (arguments,
+                          "challenge_index");
+  if (! json_is_integer (pidx))
+  {
+    ANASTASIS_redux_fail_ (cb,
+                           cb_cls,
+                           TALER_EC_ANASTASIS_REDUCER_INPUT_INVALID,
+                           "'policy_index' must be an integer");
+    return NULL;
+  }
+  if (! json_is_integer (cidx))
+  {
+    ANASTASIS_redux_fail_ (cb,
+                           cb_cls,
+                           TALER_EC_ANASTASIS_REDUCER_INPUT_INVALID,
+                           "'challenge_index' must be an integer");
+    return NULL;
+  }
+  index = json_integer_value (pidx);
+  policy_arr = json_object_get (state,
+                                "policies");
+  if (! json_is_array (policy_arr))
+  {
+    ANASTASIS_redux_fail_ (cb,
+                           cb_cls,
+                           TALER_EC_ANASTASIS_REDUCER_STATE_INVALID,
+                           "'policies' must be an array");
+    return NULL;
+  }
+  policy = json_array_get (policy_arr,
+                           index);
+  if (NULL == policy)
+  {
+    ANASTASIS_redux_fail_ (cb,
+                           cb_cls,
+                           TALER_EC_ANASTASIS_REDUCER_INPUT_INVALID,
+                           "'policy_index' out of range");
+    return NULL;
+  }
+  method_arr = json_object_get (policy,
+                                "methods");
+  if (NULL == method_arr)
+  {
+    ANASTASIS_redux_fail_ (cb,
+                           cb_cls,
+                           TALER_EC_ANASTASIS_REDUCER_INPUT_INVALID_FOR_STATE,
+                           "methods missing in policy");
+    return NULL;
+  }
+  index = json_integer_value (cidx);
+  if (0 != json_array_remove (method_arr,
+                              index))
+  {
+    ANASTASIS_redux_fail_ (cb,
+                           cb_cls,
+                           TALER_EC_ANASTASIS_REDUCER_INPUT_INVALID_FOR_STATE,
+                           "removal failed");
+    return NULL;
+  }
+  cb (cb_cls,
+      TALER_EC_NONE,
+      state);
+  return NULL;
+}
+
+
 /* ********************** done_policy_review ***************** */
 
 
@@ -3766,6 +3868,11 @@ ANASTASIS_backup_action_ (json_t *state,
       "delete_policy",
       &del_policy
     },
+    {
+      ANASTASIS_BACKUP_STATE_POLICIES_REVIEWING,
+      "delete_challenge",
+      &del_challenge
+    },
     {
       ANASTASIS_BACKUP_STATE_POLICIES_REVIEWING,
       "next",

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