Mercurial > sci
annotate libsci/apic.h @ 38:96008a1953ba
scid: improve page access message
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 07 Aug 2022 08:41:28 +0200 |
parents | e52c762d8ba8 |
children | b474f0985e39 |
rev | line source |
---|---|
33
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
1 /* |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
2 * apic.h -- synchronous HTTP request |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
3 * |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
4 * Copyright (c) 2021-2022 David Demelier <markand@malikania.fr> |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
5 * |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
9 * |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
17 */ |
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
18 |
19 | 19 #ifndef SCI_APIC_H |
20 #define SCI_APIC_H | |
21 | |
34 | 22 /** |
23 * \file apic.h | |
24 * \brief Synchronous HTTP request. | |
25 * | |
26 * This module provides function to retrieve and send data to scid using HTTP | |
27 * requests. | |
28 */ | |
29 | |
19 | 30 #include <jansson.h> |
31 | |
34 | 32 /** |
33 * \brief Maximum error message. | |
34 */ | |
19 | 35 #define APIC_ERR_MAX 128 |
34 | 36 /** |
37 * \brief Maximum URL length. | |
38 */ | |
39 #define APIC_URL_MAX 512 | |
19 | 40 |
34 | 41 /** |
42 * \brief Request context. | |
43 * | |
44 * This structure contains the error message and the HTTP return status, | |
45 * nothing has to be free'd. | |
46 */ | |
20 | 47 struct apic { |
34 | 48 char error[APIC_ERR_MAX]; /*!< Error message (empty unless). */ |
49 long status; /*!< HTTP return code. */ | |
19 | 50 }; |
51 | |
34 | 52 /** |
53 * \brief Client configuration. | |
54 */ | |
20 | 55 extern struct apiconf { |
34 | 56 char baseurl[APIC_URL_MAX]; /*!< Base API URL for requets. */ |
33
1d0ddf9e6efd
misc: general documentation
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
57 } apiconf /*! Global variable. */; |
20 | 58 |
34 | 59 /** |
60 * Perform a GET request. | |
61 * | |
62 * The URL format will be appended to the base URL using printf(3) format | |
63 * style. | |
64 * | |
65 * \pre req != NULL | |
66 * \pre fmt != NULL | |
67 * \param req the request output | |
68 * \param fmt the format string for URL page | |
69 * \return the JSON document received from the server or NULL on failure | |
70 */ | |
27
dae2de19ca5d
misc: switch to JSON everywhere
David Demelier <markand@malikania.fr>
parents:
23
diff
changeset
|
71 json_t * |
34 | 72 apic_get(struct apic *req, const char *fmt, ...); |
20 | 73 |
34 | 74 /** |
75 * Perform a POST request. | |
76 * | |
77 * The URL format will be appended to the base URL using printf(3) format | |
78 * style. | |
79 * | |
80 * \pre req != NULL | |
81 * \pre fmt != NULL | |
82 * \param req the request output | |
83 * \param body the optional document body | |
84 * \param fmt the format string for URL page | |
85 * \return the JSON document received from the server or NULL on failure | |
86 */ | |
27
dae2de19ca5d
misc: switch to JSON everywhere
David Demelier <markand@malikania.fr>
parents:
23
diff
changeset
|
87 json_t * |
34 | 88 apic_post(struct apic *req, const json_t *body, const char *fmt, ...); |
20 | 89 |
34 | 90 /** |
91 * Add a new job. | |
92 * | |
93 * \pre req != NULL | |
94 * \pre job != NULL | |
95 * \param req the request output | |
96 * \param job the job model | |
97 * \return 0 on success or -1 on error | |
98 */ | |
20 | 99 int |
34 | 100 apic_job_add(struct apic *req, json_t *job); |
20 | 101 |
34 | 102 /** |
103 * Get a list of job to perform for this worker. | |
104 * | |
105 * \pre req != NULL | |
106 * \pre worker != NULL | |
107 * \param req the request output | |
108 * \param worker the worker name | |
109 * \return the JSON document received from the server or NULL on failure | |
110 */ | |
27
dae2de19ca5d
misc: switch to JSON everywhere
David Demelier <markand@malikania.fr>
parents:
23
diff
changeset
|
111 json_t * |
34 | 112 apic_job_todo(struct apic *req, const char *worker); |
19 | 113 |
34 | 114 /** |
115 * Add a new job result. | |
116 * | |
117 * \pre req != NULL | |
118 * \pre jobresult != NULL | |
119 * \param req the request output | |
120 * \param jobresult the jobresult model | |
121 * \return 0 on success or -1 on error | |
122 */ | |
20 | 123 int |
34 | 124 apic_jobresult_add(struct apic *req, json_t *jobresult); |
20 | 125 |
34 | 126 /** |
127 * Add or update a project. | |
128 * | |
129 * \pre req != NULL | |
130 * \pre project != NULL | |
131 * \param req the request output | |
132 * \param project the project model | |
133 * \return 0 on success or -1 on error | |
134 */ | |
135 int | |
136 apic_project_save(struct apic *req, json_t *project); | |
137 | |
138 /** | |
139 * Get a list of projects. | |
140 * | |
141 * \pre req != NULL | |
142 * \param req the request output | |
143 * \return the JSON document received from the server or NULL on failure | |
144 */ | |
27
dae2de19ca5d
misc: switch to JSON everywhere
David Demelier <markand@malikania.fr>
parents:
23
diff
changeset
|
145 json_t * |
34 | 146 apic_project_list(struct apic *req); |
20 | 147 |
34 | 148 /** |
149 * Get a project by name. | |
150 * | |
151 * \pre req != NULL | |
152 * \pre name != NULL | |
153 * \param name the project name | |
154 * \param req the request output | |
155 * \return the JSON document received from the server or NULL on failure | |
156 */ | |
27
dae2de19ca5d
misc: switch to JSON everywhere
David Demelier <markand@malikania.fr>
parents:
23
diff
changeset
|
157 json_t * |
34 | 158 apic_project_find(struct apic *req, const char *name); |
159 | |
160 /** | |
161 * Add or update a worker. | |
162 * | |
163 * \pre req != NULL | |
164 * \pre worker != NULL | |
165 * \param req the request output | |
166 * \param worker the worker model | |
167 * \return 0 on success or -1 on error | |
168 */ | |
169 int | |
170 apic_worker_save(struct apic *req, json_t *worker); | |
20 | 171 |
34 | 172 /** |
173 * Get a list of workers. | |
174 * | |
175 * \pre req != NULL | |
176 * \param req the request output | |
177 * \return the JSON document received from the server or NULL on failure | |
178 */ | |
27
dae2de19ca5d
misc: switch to JSON everywhere
David Demelier <markand@malikania.fr>
parents:
23
diff
changeset
|
179 json_t * |
34 | 180 apic_worker_list(struct apic *req); |
181 | |
182 /** | |
183 * Get a worker by name. | |
184 * | |
185 * \pre req != NULL | |
186 * \pre name != NULL | |
187 * \param name the worker name | |
188 * \param req the request output | |
189 * \return the JSON document received from the server or NULL on failure | |
190 */ | |
191 json_t * | |
192 apic_worker_find(struct apic *req, const char *name); | |
19 | 193 |
194 #endif /* !SCI_APIC_H */ |