summaryrefslogtreecommitdiff
path: root/src/backend/taler-merchant-httpd_post-orders-ID-claim.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-07-27 11:02:01 +0200
committerChristian Grothoff <christian@grothoff.org>2020-07-27 11:02:01 +0200
commit801da06363ff85dc773a1c5776920ad0665b6209 (patch)
tree4d4dd2644426c557fcb7ce1d818c7fff6484090d /src/backend/taler-merchant-httpd_post-orders-ID-claim.c
parent01f8cd4824bd94aad41792b93422cb7c9f44129a (diff)
downloadmerchant-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/backend/taler-merchant-httpd_post-orders-ID-claim.c')
-rw-r--r--src/backend/taler-merchant-httpd_post-orders-ID-claim.c28
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,