--- a/libidav/methods.h Tue Jun 02 10:07:20 2015 +0200 +++ b/libidav/methods.h Tue Jun 02 20:57:23 2015 +0200 @@ -32,10 +32,28 @@ #include "webdav.h" #include "resource.h" +#include <ucx/list.h> + #ifdef __cplusplus extern "C" { #endif +typedef struct PropfindParser PropfindParser; +typedef struct ResponseTag ResponseTag; + +struct PropfindParser { + xmlDoc *document; + xmlNode *current; +}; + +struct ResponseTag { + char *href; + int iscollection; + UcxList *properties; + char *crypto_name; + char *crypto_key; +}; + CURLcode do_propfind_request( CURL *handle, UcxBuffer *request, @@ -56,6 +74,13 @@ UcxBuffer* create_propfind_request(DavSession *sn, UcxList *properties); UcxBuffer* create_basic_propfind_request(); +PropfindParser* create_propfind_parser(UcxBuffer *response, char *url); +int get_propfind_response(PropfindParser *parser, ResponseTag *result); + +int hrefeq(DavSession *sn, char *href1, char *href2); +DavResource* response2resource(DavSession *sn, ResponseTag *response, char *parent_path); +void add_properties(DavResource *res, ResponseTag *response); + DavResource* parse_propfind_response(DavSession *sn, DavResource *root, UcxBuffer *response, DavQOp *cond, size_t len); int parse_response_tag(DavResource *resource, xmlNode *node, DavQOp *cond, size_t len); void set_davprops(DavResource *res);