summaryrefslogtreecommitdiff
path: root/src/exchange/taler-exchange-httpd_aml-decision.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchange/taler-exchange-httpd_aml-decision.c')
-rw-r--r--src/exchange/taler-exchange-httpd_aml-decision.c57
1 files changed, 28 insertions, 29 deletions
diff --git a/src/exchange/taler-exchange-httpd_aml-decision.c b/src/exchange/taler-exchange-httpd_aml-decision.c
index c93c10668..4589c8eb9 100644
--- a/src/exchange/taler-exchange-httpd_aml-decision.c
+++ b/src/exchange/taler-exchange-httpd_aml-decision.c
@@ -31,27 +31,26 @@
MHD_RESULT
-TEH_handler_management_post_aml_decision (
- struct MHD_Connection *connection,
+TEH_handler_post_aml_decision (
+ struct TEH_RequestContext *rc,
+ const struct TALER_AmlOfficerPublicKeyP *officer_pub,
const json_t *root)
{
+ struct MHD_Connection *connection = rc->connection;
const char *justification;
struct GNUNET_TIME_Timestamp decision_time;
struct TALER_Amount new_threshold;
struct TALER_PaytoHashP h_payto;
uint32_t new_state32;
enum TALER_AmlDecisionState new_state;
- struct TALER_AmlOfficerPublicKeyP officer_pub;
struct TALER_AmlOfficerSignatureP officer_sig;
struct GNUNET_JSON_Specification spec[] = {
- // FIXME: officer_pub is in URL path, not in JSON body!
- GNUNET_JSON_spec_fixed_auto ("officer_pub",
- &officer_pub),
GNUNET_JSON_spec_fixed_auto ("officer_sig",
&officer_sig),
GNUNET_JSON_spec_fixed_auto ("h_payto",
&h_payto),
TALER_JSON_spec_amount ("new_threshold",
+ TEH_currency,
&new_threshold),
GNUNET_JSON_spec_string ("justification",
&justification),
@@ -76,13 +75,13 @@ TEH_handler_management_post_aml_decision (
new_state = (enum TALER_AmlDecisionState) new_state32;
TEH_METRICS_num_verifications[TEH_MT_SIGNATURE_EDDSA]++;
if (GNUNET_OK !=
- TALER_exchange_aml_decision_verify (justification,
- decision_time,
- &new_threshold,
- &h_payto,
- new_state,
- &officer_pub,
- &officer_sig))
+ TALER_officer_aml_decision_verify (justification,
+ decision_time,
+ &new_threshold,
+ &h_payto,
+ new_state,
+ &officer_pub,
+ &officer_sig))
{
GNUNET_break_op (0);
return TALER_MHD_reply_with_error (
@@ -97,25 +96,25 @@ TEH_handler_management_post_aml_decision (
bool invalid_officer;
do {
- qs = TEH_plugin->add_aml_decision (TEH_plugin->cls,
- justification,
- decision_time,
- &new_threshold,
- &h_payto,
- new_state,
- &officer_pub,
- &officer_sig,
- &invalid_officer,
- &last_date);
+ // FIXME: bound loop?
+ qs = TEH_plugin->insert_aml_decision (TEH_plugin->cls,
+ &h_payto,
+ &new_threshold,
+ new_state,
+ decision_time,
+ justification,
+ &officer_pub,
+ &officer_sig,
+ &invalid_officer,
+ &last_date);
} while (GNUNET_DB_STATUS_SOFT_ERROR == qs);
if (qs < 0)
{
GNUNET_break (0);
- *mhd_ret = TALER_MHD_reply_with_error (connection,
- MHD_HTTP_INTERNAL_SERVER_ERROR,
- TALER_EC_GENERIC_DB_STORE_FAILED,
- "add aml_decision");
- return qs;
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_INTERNAL_SERVER_ERROR,
+ TALER_EC_GENERIC_DB_STORE_FAILED,
+ "add aml_decision");
}
if (invalid_officer)
{
@@ -127,7 +126,7 @@ TEH_handler_management_post_aml_decision (
}
if (GNUNET_TIME_timestamp_cmp (last_date,
>,
- validity_start))
+ decision_time))
{
GNUNET_break_op (0);
return TALER_MHD_reply_with_error (