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 #ifndef XMLRPC_ALREADY_INCLUDED
34 #define XMLRPC_ALREADY_INCLUDED 1
35
36
37 #include "xml_element.h"
38 #include <time.h>
39
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43
44
45 #ifndef XMLRPC_LIB_VERSION
46 #define XMLRPC_LIB_VERSION "0.51"
47 #endif
48
49
50 #define XMLRPC_API_NO 20020623
51
52
53 #define XMLRPC_VERSION_STR "xmlrpc-epi v. " XMLRPC_LIB_VERSION
54
55
56 #define XMLRPC_HOME_PAGE_STR "http://xmlprc-epi.sourceforge.net/"
57
58
59
60
61
62
63
64
65
66
67
68
69
70 typedef enum _XMLRPC_VALUE_TYPE {
71 xmlrpc_none,
72 xmlrpc_empty,
73 xmlrpc_base64,
74 xmlrpc_boolean,
75 xmlrpc_datetime,
76 xmlrpc_double,
77 xmlrpc_int,
78 xmlrpc_string,
79 xmlrpc_vector
80 } XMLRPC_VALUE_TYPE;
81
82
83
84
85
86
87
88
89
90
91
92
93
94 typedef enum _XMLRPC_VECTOR_TYPE {
95 xmlrpc_vector_none,
96 xmlrpc_vector_array,
97 xmlrpc_vector_mixed,
98 xmlrpc_vector_struct
99 } XMLRPC_VECTOR_TYPE;
100
101
102
103
104
105
106
107
108
109
110
111
112 typedef enum _XMLRPC_VALUE_TYPE_EASY {
113 xmlrpc_type_none,
114 xmlrpc_type_empty,
115 xmlrpc_type_base64,
116 xmlrpc_type_boolean,
117 xmlrpc_type_datetime,
118 xmlrpc_type_double,
119 xmlrpc_type_int,
120 xmlrpc_type_string,
121
122 xmlrpc_type_array,
123 xmlrpc_type_mixed,
124 xmlrpc_type_struct
125 } XMLRPC_VALUE_TYPE_EASY;
126
127
128
129
130
131
132
133
134
135
136
137
138
139 typedef enum _xmlrpc_request_type {
140 xmlrpc_request_none,
141 xmlrpc_request_call,
142 xmlrpc_request_response,
143 } XMLRPC_REQUEST_TYPE;
144
145
146
147
148
149
150
151
152
153
154
155 typedef enum _xmlrpc_error_code {
156 xmlrpc_error_none = 0,
157 xmlrpc_error_parse_xml_syntax = -32700,
158 xmlrpc_error_parse_unknown_encoding = -32701,
159 xmlrpc_error_parse_bad_encoding = -32702,
160 xmlrpc_error_invalid_xmlrpc = -32600,
161 xmlrpc_error_unknown_method = -32601,
162 xmlrpc_error_invalid_params = -32602,
163 xmlrpc_error_internal_server = -32603,
164 xmlrpc_error_application = -32500,
165 xmlrpc_error_system = -32400,
166 xmlrpc_error_transport = -32300
167 } XMLRPC_ERROR_CODE;
168
169
170 #define xmlrpc_error_parse_xml_syntax_str "parse error. not well formed."
171 #define xmlrpc_error_parse_unknown_encoding_str "parse error. unknown encoding"
172 #define xmlrpc_error_parse_bad_encoding_str "parse error. invalid character for encoding"
173 #define xmlrpc_error_invalid_xmlrpc_str "server error. xml-rpc not conforming to spec"
174 #define xmlrpc_error_unknown_method_str "server error. method not found."
175 #define xmlrpc_error_invalid_params_str "server error. invalid method parameters"
176 #define xmlrpc_error_internal_server_str "server error. internal xmlrpc library error"
177 #define xmlrpc_error_application_str "application error."
178 #define xmlrpc_error_system_str "system error."
179 #define xmlrpc_error_transport_str "transport error."
180
181
182
183
184
185
186
187
188
189
190
191
192
193 typedef enum _xmlrpc_version {
194 xmlrpc_version_none = 0,
195 xmlrpc_version_1_0 = 1,
196 xmlrpc_version_simple = 2,
197 xmlrpc_version_danda = 2,
198 xmlrpc_version_soap_1_1 = 3
199 } XMLRPC_VERSION;
200
201
202
203
204
205
206
207
208
209
210
211
212
213 typedef struct _xmlrpc_request_output_options {
214 STRUCT_XML_ELEM_OUTPUT_OPTIONS xml_elem_opts;
215 XMLRPC_VERSION version;
216 } STRUCT_XMLRPC_REQUEST_OUTPUT_OPTIONS, *XMLRPC_REQUEST_OUTPUT_OPTIONS;
217
218
219
220
221
222
223
224
225
226
227
228
229
230 typedef struct _xmlrpc_request_input_options {
231 STRUCT_XML_ELEM_INPUT_OPTIONS xml_elem_opts;
232 } STRUCT_XMLRPC_REQUEST_INPUT_OPTIONS, *XMLRPC_REQUEST_INPUT_OPTIONS;
233
234
235
236
237
238
239
240
241
242 typedef struct _xmlrpc_error {
243 XMLRPC_ERROR_CODE code;
244 STRUCT_XML_ELEM_ERROR xml_elem_error;
245 } STRUCT_XMLRPC_ERROR, *XMLRPC_ERROR;
246
247
248
249
250
251
252
253
254
255
256
257
258
259 typedef enum _xmlrpc_case_comparison {
260 xmlrpc_case_insensitive,
261 xmlrpc_case_sensitive
262 } XMLRPC_CASE_COMPARISON;
263
264
265
266
267
268
269
270
271
272
273
274
275 typedef enum _xmlrpc_case {
276 xmlrpc_case_exact,
277 xmlrpc_case_lower,
278 xmlrpc_case_upper
279 } XMLRPC_CASE;
280
281
282
283 #define XMLRPC_DEFAULT_ID_CASE XMLRPC_GetDefaultIdCase()
284 #define XMLRPC_DEFAULT_ID_CASE_SENSITIVITY XMLRPC_GetDefaultIdCaseComparison()
285
286
287 typedef struct _xmlrpc_request* XMLRPC_REQUEST;
288 typedef struct _xmlrpc_server* XMLRPC_SERVER;
289 typedef struct _xmlrpc_value* XMLRPC_VALUE;
290
291
292
293
294
295
296
297
298
299
300
301
302
303 typedef XMLRPC_VALUE (*XMLRPC_Callback)(XMLRPC_SERVER server, XMLRPC_REQUEST input, void* userData);
304
305
306
307 XMLRPC_CASE XMLRPC_GetDefaultIdCase(void);
308 XMLRPC_CASE XMLRPC_SetDefaultIdCase(XMLRPC_CASE id_case);
309 XMLRPC_CASE_COMPARISON XMLRPC_GetDefaultIdCaseComparison(void);
310 XMLRPC_CASE_COMPARISON XMLRPC_SetDefaultIdCaseComparison(XMLRPC_CASE_COMPARISON id_case);
311
312
313 int XMLRPC_VectorSize(XMLRPC_VALUE value);
314 XMLRPC_VALUE XMLRPC_VectorRewind(XMLRPC_VALUE value);
315 XMLRPC_VALUE XMLRPC_VectorNext(XMLRPC_VALUE value);
316 int XMLRPC_SetIsVector(XMLRPC_VALUE value, XMLRPC_VECTOR_TYPE type);
317 int XMLRPC_AddValueToVector(XMLRPC_VALUE target, XMLRPC_VALUE source);
318 int XMLRPC_AddValuesToVector(XMLRPC_VALUE target, ...);
319 int XMLRPC_VectorRemoveValue(XMLRPC_VALUE vector, XMLRPC_VALUE value);
320 XMLRPC_VALUE XMLRPC_VectorGetValueWithID_Case(XMLRPC_VALUE vector, const char* id, XMLRPC_CASE_COMPARISON id_case);
321
322
323
324 XMLRPC_VALUE XMLRPC_CreateValueBoolean(const char* id, int truth);
325 XMLRPC_VALUE XMLRPC_CreateValueBase64(const char* id, const char* s, int len);
326 XMLRPC_VALUE XMLRPC_CreateValueDateTime(const char* id, time_t time);
327 XMLRPC_VALUE XMLRPC_CreateValueDateTime_ISO8601(const char* id, const char *s);
328 XMLRPC_VALUE XMLRPC_CreateValueDouble(const char* id, double f);
329 XMLRPC_VALUE XMLRPC_CreateValueInt(const char* id, int i);
330 XMLRPC_VALUE XMLRPC_CreateValueString(const char* id, const char* s, int len);
331 XMLRPC_VALUE XMLRPC_CreateValueEmpty(void);
332 XMLRPC_VALUE XMLRPC_CreateVector(const char* id, XMLRPC_VECTOR_TYPE type);
333
334
335 void XMLRPC_CleanupValue(XMLRPC_VALUE value);
336
337
338 XMLRPC_VALUE XMLRPC_RequestSetError (XMLRPC_REQUEST request, XMLRPC_VALUE error);
339 XMLRPC_VALUE XMLRPC_RequestGetError (XMLRPC_REQUEST request);
340
341
342 XMLRPC_VALUE XMLRPC_CopyValue(XMLRPC_VALUE value);
343 XMLRPC_VALUE XMLRPC_DupValueNew(XMLRPC_VALUE xSource);
344
345
346 void XMLRPC_SetValueDateTime(XMLRPC_VALUE value, time_t time);
347 void XMLRPC_SetValueDateTime_ISO8601(XMLRPC_VALUE value, const char* s);
348 void XMLRPC_SetValueDouble(XMLRPC_VALUE value, double val);
349 void XMLRPC_SetValueInt(XMLRPC_VALUE value, int val);
350 void XMLRPC_SetValueBoolean(XMLRPC_VALUE value, int val);
351 const char *XMLRPC_SetValueString(XMLRPC_VALUE value, const char* s, int len);
352 void XMLRPC_SetValueBase64(XMLRPC_VALUE value, const char* s, int len);
353 const char *XMLRPC_SetValueID_Case(XMLRPC_VALUE value, const char* id, int len, XMLRPC_CASE id_case);
354 #define XMLRPC_SetValueID(value, id, len) XMLRPC_SetValueID_Case(value, id, len, XMLRPC_DEFAULT_ID_CASE)
355
356
357 const char* XMLRPC_GetValueString(XMLRPC_VALUE value);
358 int XMLRPC_GetValueStringLen(XMLRPC_VALUE value);
359 int XMLRPC_GetValueInt(XMLRPC_VALUE value);
360 int XMLRPC_GetValueBoolean(XMLRPC_VALUE value);
361 double XMLRPC_GetValueDouble(XMLRPC_VALUE value);
362 const char* XMLRPC_GetValueBase64(XMLRPC_VALUE value);
363 time_t XMLRPC_GetValueDateTime(XMLRPC_VALUE value);
364 const char* XMLRPC_GetValueDateTime_ISO8601(XMLRPC_VALUE value);
365 const char* XMLRPC_GetValueID(XMLRPC_VALUE value);
366
367
368 XMLRPC_VALUE_TYPE XMLRPC_GetValueType(XMLRPC_VALUE v);
369 XMLRPC_VALUE_TYPE_EASY XMLRPC_GetValueTypeEasy(XMLRPC_VALUE v);
370 XMLRPC_VECTOR_TYPE XMLRPC_GetVectorType(XMLRPC_VALUE v);
371
372
373 XMLRPC_REQUEST XMLRPC_REQUEST_FromXML(const char* in_buf, int len, XMLRPC_REQUEST_INPUT_OPTIONS in_options);
374 XMLRPC_VALUE XMLRPC_VALUE_FromXML(const char* in_buf, int len, XMLRPC_REQUEST_INPUT_OPTIONS in_options);
375 char* XMLRPC_REQUEST_ToXML(XMLRPC_REQUEST request, int *buf_len);
376 char* XMLRPC_VALUE_ToXML(XMLRPC_VALUE val, int* buf_len);
377
378
379 const char* XMLRPC_RequestSetMethodName(XMLRPC_REQUEST request, const char* methodName);
380 const char* XMLRPC_RequestGetMethodName(XMLRPC_REQUEST request);
381 XMLRPC_REQUEST XMLRPC_RequestNew(void);
382 void XMLRPC_RequestFree(XMLRPC_REQUEST request, int bFreeIO);
383 XMLRPC_REQUEST_OUTPUT_OPTIONS XMLRPC_RequestSetOutputOptions(XMLRPC_REQUEST request, XMLRPC_REQUEST_OUTPUT_OPTIONS output);
384 XMLRPC_REQUEST_OUTPUT_OPTIONS XMLRPC_RequestGetOutputOptions(XMLRPC_REQUEST request);
385 XMLRPC_VALUE XMLRPC_RequestSetData(XMLRPC_REQUEST request, XMLRPC_VALUE data);
386 XMLRPC_VALUE XMLRPC_RequestGetData(XMLRPC_REQUEST request);
387 XMLRPC_REQUEST_TYPE XMLRPC_RequestSetRequestType(XMLRPC_REQUEST request, XMLRPC_REQUEST_TYPE type);
388 XMLRPC_REQUEST_TYPE XMLRPC_RequestGetRequestType(XMLRPC_REQUEST request);
389
390
391 XMLRPC_SERVER XMLRPC_ServerCreate(void);
392 XMLRPC_SERVER XMLRPC_GetGlobalServer(void);
393 void XMLRPC_ServerDestroy(XMLRPC_SERVER server);
394 int XMLRPC_ServerRegisterMethod(XMLRPC_SERVER server, const char *name, XMLRPC_Callback cb);
395 XMLRPC_Callback XMLRPC_ServerFindMethod(XMLRPC_SERVER server, const char* callName);
396 XMLRPC_VALUE XMLRPC_ServerCallMethod(XMLRPC_SERVER server, XMLRPC_REQUEST request, void* userData);
397
398 #include "xmlrpc_introspection.h"
399
400
401 int XMLRPC_ValueIsFault (XMLRPC_VALUE value);
402 int XMLRPC_ResponseIsFault(XMLRPC_REQUEST response);
403 int XMLRPC_GetValueFaultCode (XMLRPC_VALUE value);
404 int XMLRPC_GetResponseFaultCode(XMLRPC_REQUEST response);
405 const char* XMLRPC_GetValueFaultString (XMLRPC_VALUE value);
406 const char* XMLRPC_GetResponseFaultString (XMLRPC_REQUEST response);
407
408
409
410 XMLRPC_VALUE XMLRPC_UtilityCreateFault(int fault_code, const char* fault_string);
411 void XMLRPC_Free(void* mem);
412 const char* XMLRPC_GetVersionString(void);
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427 #define XMLRPC_VectorAppendString(vector, id, s, len) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueString(id, s, len))
428 #define XMLRPC_VectorAppendBase64(vector, id, s, len) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueBase64(id, s, len))
429 #define XMLRPC_VectorAppendDateTime(vector, id, time) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueDateTime(id, time))
430 #define XMLRPC_VectorAppendDateTime_ISO8601(vector, id, s) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueDateTime_ISO8601(id, s))
431 #define XMLRPC_VectorAppendDouble(vector, id, f) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueDouble(id, f))
432 #define XMLRPC_VectorAppendInt(vector, id, i) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueInt(id, i))
433 #define XMLRPC_VectorAppendBoolean(vector, id, i) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueBoolean(id, i))
434
435
436 #define XMLRPC_VectorGetValueWithID(vector, id) XMLRPC_VectorGetValueWithID_Case(vector, id, XMLRPC_DEFAULT_ID_CASE_SENSITIVITY)
437 #define XMLRPC_VectorGetStringWithID(vector, id) XMLRPC_GetValueString(XMLRPC_VectorGetValueWithID(vector, id))
438 #define XMLRPC_VectorGetBase64WithID(vector, id) XMLRPC_GetValueBase64(XMLRPC_VectorGetValueWithID(vector, id))
439 #define XMLRPC_VectorGetDateTimeWithID(vector, id) XMLRPC_GetValueDateTime(XMLRPC_VectorGetValueWithID(vector, id))
440 #define XMLRPC_VectorGetDoubleWithID(vector, id) XMLRPC_GetValueDouble(XMLRPC_VectorGetValueWithID(vector, id))
441 #define XMLRPC_VectorGetIntWithID(vector, id) XMLRPC_GetValueInt(XMLRPC_VectorGetValueWithID(vector, id))
442 #define XMLRPC_VectorGetBooleanWithID(vector, id) XMLRPC_GetValueBoolean(XMLRPC_VectorGetValueWithID(vector, id))
443
444
445
446
447 #ifdef __cplusplus
448 }
449 #endif
450
451 #endif
452
453
454