libidav/webdav.h

changeset 18
af411868ab9b
parent 2
fbdfaacc4182
equal deleted inserted replaced
17:7cfd36aa005b 18:af411868ab9b
37 #include <cx/string.h> 37 #include <cx/string.h>
38 #include <cx/buffer.h> 38 #include <cx/buffer.h>
39 #include <curl/curl.h> 39 #include <curl/curl.h>
40 #include <libxml/tree.h> 40 #include <libxml/tree.h>
41 41
42 #ifndef _WIN32
43 #include <pthread.h>
44 #else
45 #include <Windows.h>
46 #endif
47
42 #ifdef __cplusplus 48 #ifdef __cplusplus
43 extern "C" { 49 extern "C" {
44 #endif 50 #endif
45 51
46 typedef char DavBool; 52 typedef char DavBool;
64 typedef struct DavXmlNode DavXmlNode; 70 typedef struct DavXmlNode DavXmlNode;
65 typedef struct DavXmlAttr DavXmlAttr; 71 typedef struct DavXmlAttr DavXmlAttr;
66 72
67 typedef struct DavInputStream DavInputStream; 73 typedef struct DavInputStream DavInputStream;
68 typedef struct DavOutputStream DavOutputStream; 74 typedef struct DavOutputStream DavOutputStream;
75
76 #ifndef _WIN32
77 #define DAV_MUTEX pthread_mutex_t
78 #else
79 #define DAV_MUTEX HANDLE
80 #endif
69 81
70 typedef size_t(*dav_read_func)(void*, size_t, size_t, void*); 82 typedef size_t(*dav_read_func)(void*, size_t, size_t, void*);
71 typedef size_t(*dav_write_func)(const void*, size_t, size_t, void*); 83 typedef size_t(*dav_write_func)(const void*, size_t, size_t, void*);
72 typedef int(*dav_seek_func)(const void *, long, int); 84 typedef int(*dav_seek_func)(const void *, long, int);
73 85
178 void(*put_progress)(DavResource *res, int64_t total, int64_t now, void *userdata); 190 void(*put_progress)(DavResource *res, int64_t total, int64_t now, void *userdata);
179 void *progress_userdata; 191 void *progress_userdata;
180 }; 192 };
181 193
182 struct DavContext { 194 struct DavContext {
183 CxMap *namespaces; 195 CxMap *namespaces;
184 CxMap *namespaceinfo; 196 CxMap *namespaceinfo;
185 CxMap *keys; 197 CxMap *keys;
186 CxList *sessions; 198 CxList *sessions;
187 DavProxy *http_proxy; 199 DavProxy *http_proxy;
188 DavProxy *https_proxy; 200 DavProxy *https_proxy;
201 DAV_MUTEX mutex;
202 DavBool mtsafe;
189 }; 203 };
190 204
191 struct DavProxy { 205 struct DavProxy {
192 char *url; 206 char *url;
193 char *username; 207 char *username;
249 DavXmlAttr *next; 263 DavXmlAttr *next;
250 }; 264 };
251 265
252 DavContext* dav_context_new(void); 266 DavContext* dav_context_new(void);
253 void dav_context_destroy(DavContext *ctx); 267 void dav_context_destroy(DavContext *ctx);
268 void dav_context_set_mtsafe(DavContext *ctx, DavBool enable);
269
270 void dav_context_lock(DavContext *ctx);
271 void dav_context_unlock(DavContext *ctx);
254 272
255 void dav_context_add_key(DavContext *context, DavKey *key); 273 void dav_context_add_key(DavContext *context, DavKey *key);
256 DavKey* dav_context_get_key(DavContext *context, const char *name); 274 DavKey* dav_context_get_key(DavContext *context, const char *name);
257 275
258 int dav_add_namespace(DavContext *context, const char *prefix, const char *ns); 276 int dav_add_namespace(DavContext *context, const char *prefix, const char *ns);
259 DavNamespace* dav_get_namespace(DavContext *context, const char *prefix); 277 DavNamespace* dav_get_namespace(DavContext *context, const char *prefix);
260 DavNamespace* dav_get_namespace_s(DavContext *context, cxstring prefix); 278 DavNamespace* dav_get_namespace_s(DavContext *context, cxstring prefix);
261 279
262 int dav_enable_namespace_encryption(DavContext *context, const char *ns, DavBool encrypt); 280 int dav_enable_namespace_encryption(DavContext *context, const char *ns, DavBool encrypt);
263 int dav_namespace_is_encrypted(DavContext *context, const char *ns); 281 int dav_namespace_is_encrypted(DavContext *context, const char *ns);
282
283 int dav_context_add_session(DavContext *context, DavSession *sn);
284 int dav_context_remove_session(DavContext *context, DavSession *sn);
264 285
265 DavSession* dav_session_new(DavContext *context, char *base_url); 286 DavSession* dav_session_new(DavContext *context, char *base_url);
266 DavSession* dav_session_new_auth( 287 DavSession* dav_session_new_auth(
267 DavContext *context, 288 DavContext *context,
268 char *base_url, 289 char *base_url,
269 char *user, 290 char *user,
270 char *password); 291 char *password);
292 DavSession* dav_session_clone(DavSession *sn);
271 void dav_session_set_auth(DavSession *sn, const char *user, const char *password); 293 void dav_session_set_auth(DavSession *sn, const char *user, const char *password);
272 void dav_session_set_auth_s(DavSession *sn, cxstring user, cxstring password); 294 void dav_session_set_auth_s(DavSession *sn, cxstring user, cxstring password);
273 void dav_session_set_baseurl(DavSession *sn, char *base_url); 295 void dav_session_set_baseurl(DavSession *sn, char *base_url);
274 void dav_session_enable_encryption(DavSession *sn, DavKey *key, int flags); 296 void dav_session_enable_encryption(DavSession *sn, DavKey *key, int flags);
275 297

mercurial