From 28dfae3e7c5d7291a4036358050c9c886ee43316 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 16 Dec 2022 16:00:13 +0100 Subject: [PATCH] expose templating API for in-memory data --- contrib/gana | 2 +- src/include/taler_templating_lib.h | 17 +++++++++++++++++ src/templating/templating_api.c | 25 +++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/contrib/gana b/contrib/gana index 149aa0a08..20f8eb7a7 160000 --- a/contrib/gana +++ b/contrib/gana @@ -1 +1 @@ -Subproject commit 149aa0a08d787419e02277ef231d93c6a0154a47 +Subproject commit 20f8eb7a72e2160409f0f78264ec5198e9caa193 diff --git a/src/include/taler_templating_lib.h b/src/include/taler_templating_lib.h index e4f3f1f1c..53946b9c0 100644 --- a/src/include/taler_templating_lib.h +++ b/src/include/taler_templating_lib.h @@ -24,6 +24,23 @@ #include +/** + * Fill in Mustach template @a tmpl using the data from @a root + * and return the result in @a result. + * + * @param tmpl 0-terminated string with Mustach template + * @param root JSON data to fill into the template + * @param[out] result where to write the result + * @param[out] result_size where to write the length of the result + * @return 0 on success, otherwise Mustach-specific error code + */ +int +TALER_TEMPLATING_fill (const char *tmpl, + const json_t *root, + void **result, + size_t *result_size); + + /** * Load a @a template and substitute using @a root, returning the result in a * @a reply encoded suitable for the @a connection with the given @a diff --git a/src/templating/templating_api.c b/src/templating/templating_api.c index 47ada208e..324e199eb 100644 --- a/src/templating/templating_api.c +++ b/src/templating/templating_api.c @@ -171,6 +171,31 @@ make_static_url (struct MHD_Connection *con, } +int +TALER_TEMPLATING_fill (const char *tmpl, + const json_t *root, + void **result, + size_t *result_size) +{ + int eno; + + if (0 != + (eno = mustach_jansson (tmpl, + (json_t *) root, + (char **) result, + result_size))) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "mustach failed on template with error %d\n", + eno); + *result = NULL; + *result_size = 0; + return eno; + } + return eno; +} + + enum GNUNET_GenericReturnValue TALER_TEMPLATING_build (struct MHD_Connection *connection, unsigned int *http_status,