aboutsummaryrefslogtreecommitdiff
path: root/src/extensions/extensions.c
diff options
context:
space:
mode:
authorÖzgür Kesim <oec-taler@kesim.org>2022-10-14 18:56:59 +0200
committerÖzgür Kesim <oec-taler@kesim.org>2022-10-14 18:56:59 +0200
commit054e157af8c768062dd0a8e66614da18407fca28 (patch)
treefcd792c6ed7f4384e9b29f8e200f62837cd00f1e /src/extensions/extensions.c
parent956e3c3065ddb762dbe01fd720cc5ef403232564 (diff)
WIP: policy_details handling continued
- policy details generated on deposit/batch-deposit requests - insert or update of policy details in the DB - accumulation of amounts of multiple deposits for the same policy_details
Diffstat (limited to 'src/extensions/extensions.c')
-rw-r--r--src/extensions/extensions.c83
1 files changed, 21 insertions, 62 deletions
diff --git a/src/extensions/extensions.c b/src/extensions/extensions.c
index cfc10940..2ed973d9 100644
--- a/src/extensions/extensions.c
+++ b/src/extensions/extensions.c
@@ -357,31 +357,27 @@ TALER_extensions_load_manifests (
* Policy related
*/
-static char *fulfilment2str[] = {
- [TALER_PolicyFulfilmentPending] = "Pending",
- [TALER_PolicyFulfilmentSuccessTransfer] = "SuccessTransfer",
- [TALER_PolicyFulfilmentSuccessRefreshable] = "SuccessRefreshable",
- [TALER_PolicyFulfilmentFailureTransfer] = "FailureTransfer",
- [TALER_PolicyFulfilmentFailureRefreshable] = "FailureRefreshable",
- [TALER_PolicyFulfilmentTimeoutTransfer] = "TimeoutTransfer",
- [TALER_PolicyFulfilmentTimeoutRefreshable] = "TimeoutRefreshable",
+static char *fulfillment2str[] = {
+ [TALER_PolicyFulfillmentReady] = "Ready",
+ [TALER_PolicyFulfillmentSuccess] = "Success",
+ [TALER_PolicyFulfillmentFailure] = "Failure",
+ [TALER_PolicyFulfillmentTimeout] = "Timeout",
+ [TALER_PolicyFulfillmentInsufficient] = "Insufficient",
};
const char *
-TALER_policy_fulfilment_state_str (
- enum TALER_PolicyFulfilmentState state)
+TALER_policy_fulfillment_state_str (
+ enum TALER_PolicyFulfillmentState state)
{
- GNUNET_assert (TALER_PolicyFulfilmentStateMax >= state);
- return fulfilment2str[state];
+ GNUNET_assert (TALER_PolicyFulfillmentStateCount > state);
+ return fulfillment2str[state];
}
enum GNUNET_GenericReturnValue
-TALER_extensions_extract_meta_data_from_policy_details (
- const json_t *policy_details,
- struct GNUNET_HashCode *serial,
- struct GNUNET_TIME_Timestamp *deadline,
- enum TALER_PolicyFulfilmentState *state_on_deadline,
+TALER_extensions_create_policy_details (
+ const json_t *policy_options,
+ struct TALER_PolicyDetails *details,
const char **error_hint)
{
enum GNUNET_GenericReturnValue ret;
@@ -391,14 +387,14 @@ TALER_extensions_extract_meta_data_from_policy_details (
*error_hint = NULL;
- if ((NULL == policy_details) ||
- (! json_is_object (policy_details)))
+ if ((NULL == policy_options) ||
+ (! json_is_object (policy_options)))
{
*error_hint = "invalid policy object";
return GNUNET_SYSERR;
}
- jtype = json_object_get (policy_details, "type");
+ jtype = json_object_get (policy_options, "type");
if (NULL == jtype)
{
*error_hint = "no type in policy object";
@@ -414,7 +410,7 @@ TALER_extensions_extract_meta_data_from_policy_details (
extension = TALER_extensions_get_by_name (type);
if ((NULL == extension) ||
- (NULL == extension->parse_policy_details))
+ (NULL == extension->create_policy_details))
{
GNUNET_break (0);
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
@@ -423,50 +419,13 @@ TALER_extensions_extract_meta_data_from_policy_details (
return GNUNET_NO;
}
- *deadline = GNUNET_TIME_UNIT_FOREVER_TS;
- ret = extension->parse_policy_details (policy_details,
- serial,
- deadline,
- state_on_deadline,
- error_hint);
-
- GNUNET_assert ((TALER_PolicyFulfilmentTimeoutRefreshable ==
- *state_on_deadline) ||
- (TALER_PolicyFulfilmentTimeoutTransfer ==
- *state_on_deadline));
-
+ details->deadline = GNUNET_TIME_UNIT_FOREVER_TS;
+ ret = extension->create_policy_details (policy_options,
+ details,
+ error_hint);
return ret;
}
-struct TALER_PolicyFulfilmentOutcome *
-TALER_policy_fulfilment_outcome_new (size_t len)
-{
- struct TALER_PolicyFulfilmentOutcome *out;
-
- out = GNUNET_new (struct TALER_PolicyFulfilmentOutcome);
- out->len = len;
- out->positions = GNUNET_new_array (len,
- struct
- TALER_PolicyFulfilmentOutcomePosition);
-
- return out;
-}
-
-
-void
-TALER_policy_fulfilment_outcome_free (
- struct TALER_PolicyFulfilmentOutcome *outcome)
-{
- if (NULL == outcome)
- return;
-
- if (NULL != outcome->positions)
- GNUNET_free (outcome->positions);
-
- GNUNET_free (outcome);
-}
-
-
/* end of extensions.c */