From c00762ce8297fbb4ea9590a0fb7e014adb9d8dcf Mon Sep 17 00:00:00 2001 From: priscilla Date: Tue, 22 Nov 2022 08:07:11 -0500 Subject: template post, get, patch and delete --- src/backend/taler-merchant-httpd_helper.c | 44 +++++++++++++++++++++- src/backend/taler-merchant-httpd_helper.h | 12 ++++++ .../taler-merchant-httpd_private-post-templates.c | 6 +-- 3 files changed, 58 insertions(+), 4 deletions(-) diff --git a/src/backend/taler-merchant-httpd_helper.c b/src/backend/taler-merchant-httpd_helper.c index 595b82cf..a5de1781 100644 --- a/src/backend/taler-merchant-httpd_helper.c +++ b/src/backend/taler-merchant-httpd_helper.c @@ -88,7 +88,6 @@ TMH_payto_uri_array_valid (const json_t *payto_uris) return payto_ok; } - bool TMH_location_object_valid (const json_t *location) { @@ -316,6 +315,49 @@ TMH_image_data_url_valid (const char *image_data_url) return true; } +bool +TMH_template_contract_valid (const json_t *template_contract) +{ + const char *summary; + struct TALER_Amount amount = { .value = 0}; + uint32_t minimum_age = 0; + struct GNUNET_TIME_Relative pay_duration= { 0 }; + struct GNUNET_JSON_Specification spec[] = { + GNUNET_JSON_spec_mark_optional ( + GNUNET_JSON_spec_string ("summary", + &summary), + NULL), + GNUNET_JSON_spec_mark_optional ( + TALER_JSON_spec_amount ("amount", + TMH_currency, + &amount), + NULL), + GNUNET_JSON_spec_mark_optional ( + GNUNET_JSON_spec_uint32 ("minimum_age", + &minimum_age), + NULL), + GNUNET_JSON_spec_mark_optional ( + GNUNET_JSON_spec_relative_time ("pay_duration", + &pay_duration), + NULL), + GNUNET_JSON_spec_end () + }; + const char *ename; + unsigned int eline; + + if (GNUNET_OK != + GNUNET_JSON_parse (template_contract, + spec, + &ename, + &eline)) + { + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Invalid template_contract for field %s\n", + ename); + return false; + } + return true; +} bool TMH_taxes_array_valid (const json_t *taxes) diff --git a/src/backend/taler-merchant-httpd_helper.h b/src/backend/taler-merchant-httpd_helper.h index 659bddc2..dae9caaf 100644 --- a/src/backend/taler-merchant-httpd_helper.h +++ b/src/backend/taler-merchant-httpd_helper.h @@ -87,6 +87,18 @@ bool TMH_image_data_url_valid (const char *image_data_url); +/** + * Check if @a template_contract is a valid template_contract object in the sense of Taler's API + * definition. + * + * @param template_contract object to check + * @return true if @a template_location is an object + * representing a template_location. + */ +bool +TMH_template_contract_valid (const json_t *template_contract); + + /** * Setup new wire method for the given @ payto_uri. * diff --git a/src/backend/taler-merchant-httpd_private-post-templates.c b/src/backend/taler-merchant-httpd_private-post-templates.c index 1e6206bb..a2112486 100644 --- a/src/backend/taler-merchant-httpd_private-post-templates.c +++ b/src/backend/taler-merchant-httpd_private-post-templates.c @@ -46,11 +46,11 @@ templates_equal (const struct TALER_MERCHANTDB_TemplateDetails *t1, const struct TALER_MERCHANTDB_TemplateDetails *t2) { return ( (0 == strcmp (t1->template_description, - t2->tempate_description)) && + t2->template_description)) && (0 == strcmp (t1->image, t2->image)) && - (1 == json_equal (p1->template_contract, - p2->template_contract)); + (1 == json_equal (t1->template_contract, + t2->template_contract))); } -- cgit v1.2.3