diff options
author | Christian Grothoff <christian@grothoff.org> | 2020-07-27 11:02:01 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2020-07-27 11:02:01 +0200 |
commit | 801da06363ff85dc773a1c5776920ad0665b6209 (patch) | |
tree | 4d4dd2644426c557fcb7ce1d818c7fff6484090d /src | |
parent | 01f8cd4824bd94aad41792b93422cb7c9f44129a (diff) | |
download | merchant-801da06363ff85dc773a1c5776920ad0665b6209.tar.gz merchant-801da06363ff85dc773a1c5776920ad0665b6209.tar.bz2 merchant-801da06363ff85dc773a1c5776920ad0665b6209.zip |
add claim token support to POST /orders/ID/claim, incomplete, lacks DB support (for #6446)
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/taler-merchant-httpd_post-orders-ID-claim.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/backend/taler-merchant-httpd_post-orders-ID-claim.c b/src/backend/taler-merchant-httpd_post-orders-ID-claim.c index e7d0c845..5c8fa540 100644 --- a/src/backend/taler-merchant-httpd_post-orders-ID-claim.c +++ b/src/backend/taler-merchant-httpd_post-orders-ID-claim.c @@ -158,6 +158,7 @@ TMH_post_orders_ID_claim (const struct TMH_RequestHandler *rh, const char *nonce; enum GNUNET_DB_QueryStatus qs; json_t *contract_terms; + struct TALER_ClaimTokenP claim_token; { struct GNUNET_JSON_Specification spec[] = { @@ -175,6 +176,30 @@ TMH_post_orders_ID_claim (const struct TMH_RequestHandler *rh, ? MHD_YES : MHD_NO; } + if (NULL != json_object_get (hc->request_body, + "token")) + { + struct GNUNET_JSON_Specification spec[] = { + GNUNET_JSON_spec_fixed_auto ("token", + &claim_token), + GNUNET_JSON_spec_end () + }; + enum GNUNET_GenericReturnValue res; + + res = TALER_MHD_parse_json_data (connection, + hc->request_body, + spec); + if (GNUNET_OK != res) + return (GNUNET_NO == res) + ? MHD_YES + : MHD_NO; + } + else + { + memset (&claim_token, + 0, + sizeof (claim_token)); + } contract_terms = NULL; for (unsigned int i = 0; i<MAX_RETRIES; i++) { @@ -182,6 +207,7 @@ TMH_post_orders_ID_claim (const struct TMH_RequestHandler *rh, qs = claim_order (hc->instance->settings.id, order_id, nonce, + // &claim_token -- FIXME #6446: modify claim_order to include token in WHERE clause &contract_terms); if (GNUNET_DB_STATUS_SOFT_ERROR != qs) break; @@ -203,7 +229,7 @@ TMH_post_orders_ID_claim (const struct TMH_RequestHandler *rh, return TALER_MHD_reply_with_error (connection, MHD_HTTP_NOT_FOUND, TALER_EC_ORDERS_CLAIM_NOT_FOUND, - "unknown order id"); + "unknown order id (or invalid claim token)"); /* already claimed! */ json_decref (contract_terms); return TALER_MHD_reply_with_error (connection, |