Apache HTTPD
md_json.h
Go to the documentation of this file.
1/* Licensed to the Apache Software Foundation (ASF) under one or more
2 * contributor license agreements. See the NOTICE file distributed with
3 * this work for additional information regarding copyright ownership.
4 * The ASF licenses this file to You under the Apache License, Version 2.0
5 * (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef mod_md_md_json_h
18#define mod_md_md_json_h
19
20#include <apr_file_io.h>
21
23struct apr_file_t;
24
25struct md_http_t;
27struct md_timeperiod_t;
28
29typedef struct md_json_t md_json_t;
30
40
41
46
48void md_json_destroy(md_json_t *json);
49
52
53
54int md_json_has_key(const md_json_t *json, ...);
55int md_json_is(const md_json_type_t type, md_json_t *json, ...);
56
57/* boolean manipulation */
58int md_json_getb(const md_json_t *json, ...);
60
61/* number manipulation */
62double md_json_getn(const md_json_t *json, ...);
63apr_status_t md_json_setn(double value, md_json_t *json, ...);
64
65/* long manipulation */
66long md_json_getl(const md_json_t *json, ...);
68
69/* string manipulation */
71const char *md_json_gets(const md_json_t *json, ...);
72const char *md_json_dups(apr_pool_t *p, const md_json_t *json, ...);
73apr_status_t md_json_sets(const char *s, md_json_t *json, ...);
74
75/* timestamp manipulation */
76apr_time_t md_json_get_time(const md_json_t *json, ...);
78
79/* json manipulation */
81md_json_t *md_json_dupj(apr_pool_t *p, const md_json_t *json, ...);
82const md_json_t *md_json_getcj(const md_json_t *json, ...);
85apr_status_t md_json_insertj(md_json_t *value, size_t index, md_json_t *json, ...);
86
87/* Array/Object manipulation */
90
91/* Remove all array elements beyond max_elements */
93
94/* conversion function from and to json */
97
98/* identity pass through from json to json */
101
102/* conversions from json to json in specified pool */
104apr_status_t md_json_clone_from(void **pvalue, const md_json_t *json, apr_pool_t *p, void *baton);
105
106/* Manipulating/Iteration on generic Arrays */
108 void *baton, const md_json_t *json, ...);
110 void *baton, md_json_t *json, ...);
111
112/* Called on each array element, aborts iteration when returning 0 */
113typedef int md_json_itera_cb(void *baton, size_t index, md_json_t *json);
114int md_json_itera(md_json_itera_cb *cb, void *baton, md_json_t *json, ...);
115
116/* Called on each object key, aborts iteration when returning 0 */
117typedef int md_json_iterkey_cb(void *baton, const char* key, md_json_t *json);
118int md_json_iterkey(md_json_iterkey_cb *cb, void *baton, md_json_t *json, ...);
119
120/* Manipulating Object String values */
123
124/* Manipulating String Arrays */
128
129/* serialization & parsing */
131const char *md_json_writep(const md_json_t *json, apr_pool_t *p, md_json_fmt_t fmt);
133 md_json_fmt_t fmt, struct apr_file_t *f);
135 const char *fpath, apr_fileperms_t perms);
137 const char *fpath, apr_fileperms_t perms);
138
142
143
144/* http retrieval */
146 struct md_http_t *http, const char *url);
148 const struct md_http_response_t *res);
149
151
152const char *md_json_dump_state(const md_json_t *json, apr_pool_t *p);
153
156
157#endif /* md_json_h */
APR File I/O Handling.
ap_vhost_iterate_conn_cb void * baton
Definition http_vhost.h:87
apr_file_t * f
apr_bucket apr_bucket_brigade * a
apr_pool_t apr_dbd_t apr_dbd_results_t ** res
Definition apr_dbd.h:287
apr_datum_t apr_datum_t * pvalue
Definition apr_dbm.h:128
const char * src
Definition apr_encode.h:167
const char * url
Definition apr_escape.h:120
const char const apr_size_t data_len
apr_size_t size
const char int apr_pool_t * pool
Definition apr_cstr.h:84
const char * value
Definition apr_env.h:51
int apr_status_t
Definition apr_errno.h:44
apr_int32_t apr_fileperms_t
const char * key
const char apr_fileperms_t perms
void * data
int type
apr_vformatter_buff_t const char * fmt
Definition apr_lib.h:175
const char * s
Definition apr_strings.h:95
apr_int64_t apr_time_t
Definition apr_time.h:45
apr_pool_t * p
Definition md_event.c:32
md_json_t * md_json_create(apr_pool_t *pool)
Definition md_json.c:92
apr_status_t md_json_to_cb(void *value, md_json_t *json, apr_pool_t *p, void *baton)
Definition md_json.h:95
apr_status_t md_json_get_timeperiod(struct md_timeperiod_t *tp, md_json_t *json,...)
Definition md_json.c:1291
apr_status_t md_json_getsa(apr_array_header_t *a, const md_json_t *json,...)
Definition md_json.c:864
md_json_t * md_json_dupj(apr_pool_t *p, const md_json_t *json,...)
Definition md_json.c:492
int md_json_getb(const md_json_t *json,...)
Definition md_json.c:330
apr_status_t md_json_clr(md_json_t *json,...)
Definition md_json.c:600
md_json_t * md_json_create_s(apr_pool_t *pool, const char *s)
Definition md_json.c:97
double md_json_getn(const md_json_t *json,...)
Definition md_json.c:356
const char * md_json_gets(const md_json_t *json,...)
Definition md_json.c:406
long md_json_getl(const md_json_t *json,...)
Definition md_json.c:381
apr_status_t md_json_setn(double value, md_json_t *json,...)
Definition md_json.c:367
md_json_fmt_t
Definition md_json.h:42
@ MD_JSON_FMT_COMPACT
Definition md_json.h:43
@ MD_JSON_FMT_INDENT
Definition md_json.h:44
apr_status_t md_json_pass_from(void **pvalue, md_json_t *json, apr_pool_t *p, void *baton)
Definition md_json.c:706
md_json_t * md_json_copy(apr_pool_t *pool, const md_json_t *json)
Definition md_json.c:111
apr_status_t md_json_geta(apr_array_header_t *a, md_json_from_cb *cb, void *baton, const md_json_t *json,...)
Definition md_json.c:730
md_json_t * md_json_getj(md_json_t *json,...)
Definition md_json.c:473
apr_status_t md_json_set_timeperiod(const struct md_timeperiod_t *tp, md_json_t *json,...)
const md_json_t * md_json_getcj(const md_json_t *json,...)
Definition md_json.c:508
apr_status_t md_json_freplace(const md_json_t *json, apr_pool_t *p, md_json_fmt_t fmt, const char *fpath, apr_fileperms_t perms)
Definition md_json.c:1058
md_json_type_t
Definition md_json.h:31
@ MD_JSON_TYPE_INT
Definition md_json.h:36
@ MD_JSON_TYPE_ARRAY
Definition md_json.h:33
@ MD_JSON_TYPE_BOOL
Definition md_json.h:37
@ MD_JSON_TYPE_STRING
Definition md_json.h:34
@ MD_JSON_TYPE_OBJECT
Definition md_json.h:32
@ MD_JSON_TYPE_NULL
Definition md_json.h:38
@ MD_JSON_TYPE_REAL
Definition md_json.h:35
md_json_t * md_json_clone(apr_pool_t *pool, const md_json_t *json)
Definition md_json.c:116
int md_json_iterkey(md_json_iterkey_cb *cb, void *baton, md_json_t *json,...)
Definition md_json.c:835
apr_status_t md_json_seta(apr_array_header_t *a, md_json_to_cb *cb, void *baton, md_json_t *json,...)
Definition md_json.c:767
apr_status_t md_json_gets_dict(apr_table_t *dict, const md_json_t *json,...)
Definition md_json.c:637
apr_status_t md_json_dupsa(apr_array_header_t *a, apr_pool_t *p, md_json_t *json,...)
Definition md_json.c:887
apr_status_t md_json_addj(const md_json_t *value, md_json_t *json,...)
Definition md_json.c:555
apr_status_t md_json_readb(md_json_t **pjson, apr_pool_t *pool, struct apr_bucket_brigade *bb)
Definition md_json.c:1124
apr_size_t md_json_limita(size_t max_elements, md_json_t *json,...)
Definition md_json.c:577
apr_status_t md_json_set_time(apr_time_t value, md_json_t *json,...)
Definition md_json.c:457
int md_json_iterkey_cb(void *baton, const char *key, md_json_t *json)
Definition md_json.h:117
apr_status_t md_json_insertj(md_json_t *value, size_t index, md_json_t *json,...)
Definition md_json.c:566
apr_status_t md_json_fcreatex(const md_json_t *json, apr_pool_t *p, md_json_fmt_t fmt, const char *fpath, apr_fileperms_t perms)
Definition md_json.c:1034
apr_status_t md_json_pass_to(void *value, md_json_t *json, apr_pool_t *p, void *baton)
Definition md_json.c:699
apr_status_t md_json_readf(md_json_t **pjson, apr_pool_t *pool, const char *fpath)
Definition md_json.c:1156
apr_status_t md_json_copy_to(md_json_t *dest, const md_json_t *src,...)
Definition md_json.c:1235
apr_status_t md_json_read_http(md_json_t **pjson, apr_pool_t *pool, const struct md_http_response_t *res)
apr_status_t md_json_del(md_json_t *json,...)
Definition md_json.c:618
apr_status_t md_json_http_get(md_json_t **pjson, apr_pool_t *pool, struct md_http_t *http, const char *url)
Definition md_json.c:1215
apr_status_t md_json_from_cb(void **pvalue, md_json_t *json, apr_pool_t *p, void *baton)
Definition md_json.h:96
apr_status_t md_json_setj(const md_json_t *value, md_json_t *json,...)
Definition md_json.c:527
apr_status_t md_json_clone_from(void **pvalue, const md_json_t *json, apr_pool_t *p, void *baton)
Definition md_json.c:720
apr_status_t md_json_sets_dict(apr_table_t *dict, md_json_t *json,...)
Definition md_json.c:668
int md_json_has_key(const md_json_t *json,...)
Definition md_json.c:279
int md_json_itera(md_json_itera_cb *cb, void *baton, md_json_t *json,...)
Definition md_json.c:809
apr_status_t md_json_sets(const char *s, md_json_t *json,...)
Definition md_json.c:430
apr_time_t md_json_get_time(const md_json_t *json,...)
Definition md_json.c:444
int md_json_itera_cb(void *baton, size_t index, md_json_t *json)
Definition md_json.h:113
int md_json_is(const md_json_type_t type, md_json_t *json,...)
Definition md_json.c:294
void md_json_destroy(md_json_t *json)
Definition md_json.c:102
apr_status_t md_json_setb(int value, md_json_t *json,...)
Definition md_json.c:342
apr_status_t md_json_readd(md_json_t **pjson, apr_pool_t *pool, const char *data, size_t data_len)
Definition md_json.c:1068
const char * md_json_dups(apr_pool_t *p, const md_json_t *json,...)
Definition md_json.c:418
apr_status_t md_json_clone_to(void *value, md_json_t *json, apr_pool_t *p, void *baton)
Definition md_json.c:714
apr_status_t md_json_writef(const md_json_t *json, apr_pool_t *p, md_json_fmt_t fmt, struct apr_file_t *f)
Definition md_json.c:1015
apr_status_t md_json_setl(long value, md_json_t *json,...)
Definition md_json.c:392
const char * md_json_dump_state(const md_json_t *json, apr_pool_t *p)
Definition md_json.c:1253
apr_status_t md_json_setsa(apr_array_header_t *a, md_json_t *json,...)
Definition md_json.c:911
const char * md_json_writep(const md_json_t *json, apr_pool_t *p, md_json_fmt_t fmt)
Definition md_json.c:992
apr_status_t md_json_writeb(const md_json_t *json, md_json_fmt_t fmt, struct apr_bucket_brigade *bb)
Definition md_json.c:972