226 |
226 |
227 DavResource* parse_propfind_response(DavSession *sn, DavResource *root, UcxBuffer *response, DavQOp *cond, size_t len) { |
227 DavResource* parse_propfind_response(DavSession *sn, DavResource *root, UcxBuffer *response, DavQOp *cond, size_t len) { |
228 char *url = NULL; |
228 char *url = NULL; |
229 curl_easy_getinfo(sn->handle, CURLINFO_EFFECTIVE_URL, &url); |
229 curl_easy_getinfo(sn->handle, CURLINFO_EFFECTIVE_URL, &url); |
230 if(!root) { |
230 if(!root) { |
|
231 printf("method.c: TODO: remove\n"); |
231 root = dav_resource_new_href(sn, util_url_path(url)); // TODO: remove |
232 root = dav_resource_new_href(sn, util_url_path(url)); // TODO: remove |
232 } |
233 } |
233 |
234 |
234 xmlDoc *doc = xmlReadMemory(response->space, response->size, url, NULL, 0); |
235 xmlDoc *doc = xmlReadMemory(response->space, response->size, url, NULL, 0); |
235 if(!doc) { |
236 if(!doc) { |
353 if(!name) { |
354 if(!name) { |
354 // TODO: error |
355 // TODO: error |
355 fprintf(stderr, "decrypted name is null\n"); |
356 fprintf(stderr, "decrypted name is null\n"); |
356 } |
357 } |
357 } else { |
358 } else { |
358 name = util_resource_name(href); |
359 sstr_t resname = sstr(util_resource_name(href)); |
|
360 int nlen = 0; |
|
361 char *uname = curl_easy_unescape( |
|
362 sn->handle, |
|
363 resname.ptr, |
|
364 resname.length, |
|
365 &nlen); |
|
366 name = dav_session_strdup(sn, uname); |
|
367 curl_free(uname); |
359 } |
368 } |
360 |
369 |
361 href = dav_session_strdup(sn, href); |
370 href = dav_session_strdup(sn, href); |
362 res = dav_resource_new_full(sn, resource->path, name, href); |
371 res = dav_resource_new_full(sn, resource->path, name, href); |
|
372 |
|
373 dav_session_free(sn, name); |
363 } |
374 } |
364 res->iscollection = iscollection; |
375 res->iscollection = iscollection; |
365 |
376 |
366 // add properties |
377 // add properties |
367 UCX_FOREACH(elm, properties) { |
378 UCX_FOREACH(elm, properties) { |