1 /*
2  * e-source-webdav.h
3  *
4  * This library is free software: you can redistribute it and/or modify it
5  * under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation.
7  *
8  * This library is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
10  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
11  * for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this library. If not, see <http://www.gnu.org/licenses/>.
15  *
16  */
17 
18 #if !defined (__LIBEDATASERVER_H_INSIDE__) && !defined (LIBEDATASERVER_COMPILATION)
19 #error "Only <libedataserver/libedataserver.h> should be included directly."
20 #endif
21 
22 #ifndef E_SOURCE_WEBDAV_H
23 #define E_SOURCE_WEBDAV_H
24 
25 #include <gio/gio.h>
26 #include <libsoup/soup.h>
27 #include <libedataserver/e-source-enums.h>
28 #include <libedataserver/e-source-extension.h>
29 
30 /* Standard GObject macros */
31 #define E_TYPE_SOURCE_WEBDAV \
32 	(e_source_webdav_get_type ())
33 #define E_SOURCE_WEBDAV(obj) \
34 	(G_TYPE_CHECK_INSTANCE_CAST \
35 	((obj), E_TYPE_SOURCE_WEBDAV, ESourceWebdav))
36 #define E_SOURCE_WEBDAV_CLASS(cls) \
37 	(G_TYPE_CHECK_CLASS_CAST \
38 	((cls), E_TYPE_SOURCE_WEBDAV, ESourceWebdavClass))
39 #define E_IS_SOURCE_WEBDAV(obj) \
40 	(G_TYPE_CHECK_INSTANCE_TYPE \
41 	((obj), E_TYPE_SOURCE_WEBDAV))
42 #define E_IS_SOURCE_WEBDAV_CLASS(cls) \
43 	(G_TYPE_CHECK_CLASS_TYPE \
44 	((cls), E_TYPE_SOURCE_WEBDAV))
45 #define E_SOURCE_WEBDAV_GET_CLASS(obj) \
46 	(G_TYPE_INSTANCE_GET_CLASS \
47 	((obj), E_TYPE_SOURCE_WEBDAV, ESourceWebdavClass))
48 
49 /**
50  * E_SOURCE_EXTENSION_WEBDAV_BACKEND:
51  *
52  * Pass this extension name to e_source_get_extension() to access
53  * #ESourceWebdav.  This is also used as a group name in key files.
54  *
55  * Since: 3.6
56  **/
57 #define E_SOURCE_EXTENSION_WEBDAV_BACKEND "WebDAV Backend"
58 
59 G_BEGIN_DECLS
60 
61 /* forward declaration */
62 struct _ENamedParameters;
63 struct _ESourceRegistry;
64 
65 typedef struct _ESourceWebdav ESourceWebdav;
66 typedef struct _ESourceWebdavClass ESourceWebdavClass;
67 typedef struct _ESourceWebdavPrivate ESourceWebdavPrivate;
68 
69 /**
70  * ESourceWebdav:
71  *
72  * Contains only private data that should be read and manipulated using the
73  * functions below.
74  *
75  * Since: 3.6
76  **/
77 struct _ESourceWebdav {
78 	/*< private >*/
79 	ESourceExtension parent;
80 	ESourceWebdavPrivate *priv;
81 };
82 
83 struct _ESourceWebdavClass {
84 	ESourceExtensionClass parent_class;
85 };
86 
87 GType		e_source_webdav_get_type	(void) G_GNUC_CONST;
88 gboolean	e_source_webdav_get_avoid_ifmatch
89 						(ESourceWebdav *extension);
90 void		e_source_webdav_set_avoid_ifmatch
91 						(ESourceWebdav *extension,
92 						 gboolean avoid_ifmatch);
93 gboolean	e_source_webdav_get_calendar_auto_schedule
94 						(ESourceWebdav *extension);
95 void		e_source_webdav_set_calendar_auto_schedule
96 						(ESourceWebdav *extension,
97 						 gboolean calendar_auto_schedule);
98 const gchar *	e_source_webdav_get_display_name
99 						(ESourceWebdav *extension);
100 gchar *		e_source_webdav_dup_display_name
101 						(ESourceWebdav *extension);
102 void		e_source_webdav_set_display_name
103 						(ESourceWebdav *extension,
104 						 const gchar *display_name);
105 const gchar *	e_source_webdav_get_color	(ESourceWebdav *extension);
106 gchar *		e_source_webdav_dup_color	(ESourceWebdav *extension);
107 void		e_source_webdav_set_color	(ESourceWebdav *extension,
108 						 const gchar *color);
109 const gchar *	e_source_webdav_get_email_address
110 						(ESourceWebdav *extension);
111 gchar *		e_source_webdav_dup_email_address
112 						(ESourceWebdav *extension);
113 void		e_source_webdav_set_email_address
114 						(ESourceWebdav *extension,
115 						 const gchar *email_address);
116 const gchar *	e_source_webdav_get_resource_path
117 						(ESourceWebdav *extension);
118 gchar *		e_source_webdav_dup_resource_path
119 						(ESourceWebdav *extension);
120 void		e_source_webdav_set_resource_path
121 						(ESourceWebdav *extension,
122 						 const gchar *resource_path);
123 const gchar *	e_source_webdav_get_resource_query
124 						(ESourceWebdav *extension);
125 gchar *		e_source_webdav_dup_resource_query
126 						(ESourceWebdav *extension);
127 void		e_source_webdav_set_resource_query
128 						(ESourceWebdav *extension,
129 						 const gchar *resource_query);
130 const gchar *	e_source_webdav_get_ssl_trust	(ESourceWebdav *extension);
131 gchar *		e_source_webdav_dup_ssl_trust	(ESourceWebdav *extension);
132 void		e_source_webdav_set_ssl_trust	(ESourceWebdav *extension,
133 						 const gchar *ssl_trust);
134 SoupURI *	e_source_webdav_dup_soup_uri	(ESourceWebdav *extension);
135 void		e_source_webdav_set_soup_uri	(ESourceWebdav *extension,
136 						 SoupURI *soup_uri);
137 void		e_source_webdav_update_ssl_trust
138 						(ESourceWebdav *extension,
139 						 const gchar *host,
140 						 GTlsCertificate *cert,
141 						 ETrustPromptResponse response);
142 ETrustPromptResponse
143 		e_source_webdav_verify_ssl_trust
144 						(ESourceWebdav *extension,
145 						 const gchar *host,
146 						 GTlsCertificate *cert,
147 						 GTlsCertificateFlags cert_errors);
148 void		e_source_webdav_unset_temporary_ssl_trust
149 						(ESourceWebdav *extension);
150 ETrustPromptResponse
151 		e_source_webdav_get_ssl_trust_response
152 						(ESourceWebdav *extension);
153 void		e_source_webdav_set_ssl_trust_response
154 						(ESourceWebdav *extension,
155 						 ETrustPromptResponse response);
156 guint		e_source_webdav_get_order	(ESourceWebdav *extension);
157 void		e_source_webdav_set_order	(ESourceWebdav *extension,
158 						 guint order);
159 
160 G_END_DECLS
161 
162 #endif /* E_SOURCE_WEBDAV_H */
163