#ifndef DAV_SESSION_H
#define DAV_SESSION_H
#include <cx/buffer.h>
#include "webdav.h"
#ifdef __cplusplus
extern "C" {
#endif
#define DAV_SESSION_MEMPOOL_SIZE 1024
#define DAV_PATH_CACHE_SIZE 32
#define DAV_ENCRYPT_NAME(sn) \
(((sn)->flags &
DAV_SESSION_ENCRYPT_NAME) ==
DAV_SESSION_ENCRYPT_NAME)
#define DAV_DECRYPT_NAME(sn) \
(((sn)->flags &
DAV_SESSION_DECRYPT_NAME) ==
DAV_SESSION_DECRYPT_NAME)
#define DAV_ENCRYPT_CONTENT(sn) \
(((sn)->flags &
DAV_SESSION_ENCRYPT_CONTENT) ==
DAV_SESSION_ENCRYPT_CONTENT)
#define DAV_DECRYPT_CONTENT(sn) \
(((sn)->flags &
DAV_SESSION_DECRYPT_CONTENT) ==
DAV_SESSION_DECRYPT_CONTENT)
#define DAV_IS_ENCRYPTED(sn) \
(
DAV_ENCRYPT_NAME(sn) ||
DAV_ENCRYPT_CONTENT(sn))
#define DAV_CRYPTO(sn) \
(
DAV_ENCRYPT_NAME(sn) ||
DAV_DECRYPT_NAME(sn) || \
DAV_ENCRYPT_CONTENT(sn) ||
DAV_DECRYPT_CONTENT(sn))
#define DAV_ENCRYPT_PROPERTIES(sn) \
(((sn)->flags &
DAV_SESSION_ENCRYPT_PROPERTIES) ==
DAV_SESSION_ENCRYPT_PROPERTIES)
#define DAV_DECRYPT_PROPERTIES(sn) \
(((sn)->flags &
DAV_SESSION_DECRYPT_PROPERTIES) ==
DAV_SESSION_DECRYPT_PROPERTIES)
typedef struct DavLock DavLock;
struct DavLock {
char *path;
char *token;
};
typedef struct DavLockManager {
CxMap *resource_locks;
CxList *collection_locks;
} DavLockManager;
CURLcode dav_session_curl_perform(DavSession *sn,
long *status);
CURLcode dav_session_curl_perform_buf(DavSession *sn, CxBuffer *request, CxBuffer *response,
long *status);
int dav_session_get_progress(
void *clientp,
curl_off_t dltotal,
curl_off_t dlnow,
curl_off_t ultotal,
curl_off_t ulnow);
int dav_session_put_progress(
void *clientp,
curl_off_t dltotal,
curl_off_t dlnow,
curl_off_t ultotal,
curl_off_t ulnow);
void dav_session_set_error(DavSession *sn, CURLcode c,
int status);
void dav_session_set_errstr(DavSession *sn,
const char *str);
char* dav_session_create_plain_href(DavSession *sn,
const char *path);
char* dav_session_get_href(DavSession *sn,
const char *path);
DavResource* dav_find_child(DavSession *sn, DavResource *res, CxBuffer *rqbuf,
const char *name);
void dav_session_cache_path(DavSession *sn, cxstring path, cxstring href);
DavLock* dav_create_lock(DavSession *sn,
const char *token,
char *timeout);
void dav_destroy_lock(DavSession *sn, DavLock *lock);
int dav_add_resource_lock(DavSession *sn,
const char *path, DavLock *lock);
int dav_add_collection_lock(DavSession *sn,
const char *path, DavLock *lock);
DavLock* dav_get_lock(DavSession *sn,
const char *path);
void dav_remove_lock(DavSession *sn,
const char *path, DavLock *lock);
#ifdef __cplusplus
}
#endif
#endif