• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * Copyright 2015 - Collabora Ltd.
4  */
5 
6 #ifndef __SOUP_XMLRPC_H__
7 #define __SOUP_XMLRPC_H__ 1
8 
9 #include <libsoup/soup-types.h>
10 #include <libsoup/soup-xmlrpc-old.h>
11 
12 G_BEGIN_DECLS
13 
14 /* XML-RPC client */
15 SOUP_AVAILABLE_IN_2_52
16 char       *soup_xmlrpc_build_request   (const char *method_name,
17 					 GVariant   *params,
18 					 GError    **error);
19 SOUP_AVAILABLE_IN_2_52
20 SoupMessage *soup_xmlrpc_message_new    (const char *uri,
21 					 const char *method_name,
22 					 GVariant   *params,
23 					 GError    **error);
24 SOUP_AVAILABLE_IN_2_52
25 GVariant    *soup_xmlrpc_parse_response (const char *method_response,
26 					 int         length,
27 					 const char *signature,
28 					 GError    **error);
29 
30 /* XML-RPC server */
31 typedef struct _SoupXMLRPCParams SoupXMLRPCParams;
32 SOUP_AVAILABLE_IN_2_52
33 void         soup_xmlrpc_params_free          (SoupXMLRPCParams  *self);
34 SOUP_AVAILABLE_IN_2_52
35 GVariant    *soup_xmlrpc_params_parse         (SoupXMLRPCParams  *self,
36 					       const char        *signature,
37 					       GError           **error);
38 SOUP_AVAILABLE_IN_2_52
39 char       *soup_xmlrpc_parse_request         (const char        *method_call,
40 					       int                length,
41 					       SoupXMLRPCParams **params,
42 					       GError           **error);
43 SOUP_AVAILABLE_IN_2_52
44 char       *soup_xmlrpc_build_response        (GVariant          *value,
45 					       GError           **error);
46 SOUP_AVAILABLE_IN_2_4
47 char       *soup_xmlrpc_build_fault           (int                fault_code,
48 					       const char        *fault_format,
49 					       ...) G_GNUC_PRINTF (2, 3);
50 SOUP_AVAILABLE_IN_2_52
51 gboolean     soup_xmlrpc_message_set_response (SoupMessage       *msg,
52 					       GVariant          *value,
53 					       GError           **error);
54 SOUP_AVAILABLE_IN_2_52
55 void         soup_xmlrpc_message_set_fault    (SoupMessage       *msg,
56 					       int                fault_code,
57 					       const char        *fault_format,
58 					       ...) G_GNUC_PRINTF (3, 4);
59 
60 /* Utils */
61 SOUP_AVAILABLE_IN_2_52
62 GVariant *soup_xmlrpc_variant_new_datetime (SoupDate *date);
63 
64 SOUP_AVAILABLE_IN_2_52
65 SoupDate *soup_xmlrpc_variant_get_datetime (GVariant *variant,
66 					    GError  **error);
67 
68 /* Errors */
69 #define SOUP_XMLRPC_ERROR soup_xmlrpc_error_quark()
70 SOUP_AVAILABLE_IN_2_4
71 GQuark soup_xmlrpc_error_quark (void);
72 
73 typedef enum {
74 	SOUP_XMLRPC_ERROR_ARGUMENTS,
75 	SOUP_XMLRPC_ERROR_RETVAL
76 } SoupXMLRPCError;
77 
78 #define SOUP_XMLRPC_FAULT soup_xmlrpc_fault_quark()
79 SOUP_AVAILABLE_IN_2_4
80 GQuark soup_xmlrpc_fault_quark (void);
81 
82 typedef enum {
83 	SOUP_XMLRPC_FAULT_PARSE_ERROR_NOT_WELL_FORMED = -32700,
84 	SOUP_XMLRPC_FAULT_PARSE_ERROR_UNSUPPORTED_ENCODING = -32701,
85 	SOUP_XMLRPC_FAULT_PARSE_ERROR_INVALID_CHARACTER_FOR_ENCODING = -32702,
86 	SOUP_XMLRPC_FAULT_SERVER_ERROR_INVALID_XML_RPC = -32600,
87 	SOUP_XMLRPC_FAULT_SERVER_ERROR_REQUESTED_METHOD_NOT_FOUND = -32601,
88 	SOUP_XMLRPC_FAULT_SERVER_ERROR_INVALID_METHOD_PARAMETERS = -32602,
89 	SOUP_XMLRPC_FAULT_SERVER_ERROR_INTERNAL_XML_RPC_ERROR = -32603,
90 	SOUP_XMLRPC_FAULT_APPLICATION_ERROR = -32500,
91 	SOUP_XMLRPC_FAULT_SYSTEM_ERROR = -32400,
92 	SOUP_XMLRPC_FAULT_TRANSPORT_ERROR = -32300
93 } SoupXMLRPCFault;
94 
95 G_END_DECLS
96 
97 #endif /* __SOUP_XMLRPC_H__ */
98