summaryrefslogtreecommitdiff
path: root/src/templating/mustach-jansson.h
blob: 8fe989fa5065bdc8fa724061af0594c5e603aaab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
 Copyright (C) 2020 Taler Systems SA

 Original license:
 Author: José Bollo <jose.bollo@iot.bzh>
 Author: José Bollo <jobol@nonadev.net>

 https://gitlab.com/jobol/mustach

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
*/

#ifndef _mustach_jansson_h_included_
#define _mustach_jansson_h_included_

#include "taler_json_lib.h"
#include "mustach.h"

/**
 * fmustach_jansson - Renders the mustache 'template' in 'file' for 'root'.
 *
 * @template: the template string to instantiate
 * @root:     the root json object to render
 * \@file:     the file where to write the result
 *
 * Returns 0 in case of success, -1 with errno set in case of system error
 * a other negative value in case of error.
 */
extern int fmustach_jansson (const char *template, json_t *root, FILE *file);

/**
 * fmustach_jansson - Renders the mustache 'template' in 'fd' for 'root'.
 *
 * @template: the template string to instantiate
 * @root:     the root json object to render
 * @fd:       the file descriptor number where to write the result
 *
 * Returns 0 in case of success, -1 with errno set in case of system error
 * a other negative value in case of error.
 */
extern int fdmustach_jansson (const char *template, json_t *root, int fd);


/**
 * fmustach_jansson - Renders the mustache 'template' in 'result' for 'root'.
 *
 * @template: the template string to instantiate
 * @root:     the root json object to render
 * @result:   the pointer receiving the result when 0 is returned
 * @size:     the size of the returned result
 *
 * Returns 0 in case of success, -1 with errno set in case of system error
 * a other negative value in case of error.
 */
extern int mustach_jansson (const char *template, json_t *root, char **result,
                            size_t *size);

/**
 * umustach_jansson - Renders the mustache 'template' for 'root' to custom writer 'writecb' with 'closure'.
 *
 * @template: the template string to instantiate
 * @root:     the root json object to render
 * @writecb:  the function that write values
 * @closure:  the closure for the write function
 *
 * Returns 0 in case of success, -1 with errno set in case of system error
 * a other negative value in case of error.
 */
typedef int (*mustach_jansson_write_cb)(void *closure, const char *buffer,
                                        size_t size);
extern int umustach_jansson (const char *template, json_t *root,
                             mustach_jansson_write_cb writecb, void *closure);

#endif