libidav/methods.c

changeset 225
a297c2e28fa1
parent 223
cbbdf207e67e
child 227
bf485439222a
equal deleted inserted replaced
224:4b55f05f4e00 225:a297c2e28fa1
456 456
457 DavResource* parse_propfind_response(DavSession *sn, DavResource *root, UcxBuffer *response) { 457 DavResource* parse_propfind_response(DavSession *sn, DavResource *root, UcxBuffer *response) {
458 char *url = NULL; 458 char *url = NULL;
459 curl_easy_getinfo(sn->handle, CURLINFO_EFFECTIVE_URL, &url); 459 curl_easy_getinfo(sn->handle, CURLINFO_EFFECTIVE_URL, &url);
460 if(!root) { 460 if(!root) {
461 printf("method.c: TODO: remove\n"); 461 printf("methods.c: TODO: remove\n");
462 root = dav_resource_new_href(sn, util_url_path(url)); // TODO: remove 462 root = dav_resource_new_href(sn, util_url_path(url)); // TODO: remove
463 } 463 }
464 464
465 //printf("%.*s\n\n", response->size, response->space); 465 //printf("%.*s\n\n", response->size, response->space);
466 xmlDoc *doc = xmlReadMemory(response->space, response->size, url, NULL, 0); 466 xmlDoc *doc = xmlReadMemory(response->space, response->size, url, NULL, 0);
489 // create resource 489 // create resource
490 char *name = NULL; 490 char *name = NULL;
491 DavKey *key = NULL; 491 DavKey *key = NULL;
492 if(DAV_DECRYPT_NAME(sn) && response->crypto_name && (key = dav_context_get_key(sn->context, response->crypto_key))) { 492 if(DAV_DECRYPT_NAME(sn) && response->crypto_name && (key = dav_context_get_key(sn->context, response->crypto_key))) {
493 if(!response->crypto_key) { 493 if(!response->crypto_key) {
494 // TODO: error 494 sn->error = DAV_ERROR;
495 fprintf(stderr, "encrypted resource without key\n"); 495 dav_session_set_errstr(sn, "Missing crypto-key property");
496 return NULL; 496 return NULL;
497 } 497 }
498 name = util_decrypt_str_k(sn, response->crypto_name, key); 498 name = util_decrypt_str_k(sn, response->crypto_name, key);
499 if(!name) { 499 if(!name) {
500 // TODO: error 500 sn->error = DAV_ERROR;
501 fprintf(stderr, "decrypted name is null\n"); 501 dav_session_set_errstr(sn, "Cannot decrypt resource name");
502 return NULL; 502 return NULL;
503 } 503 }
504 } else { 504 } else {
505 sstr_t resname = sstr(util_resource_name(response->href)); 505 sstr_t resname = sstr(util_resource_name(response->href));
506 int nlen = 0; 506 int nlen = 0;
638 if(!res) { 638 if(!res) {
639 // create new resource object 639 // create new resource object
640 char *name = NULL; 640 char *name = NULL;
641 if(DAV_DECRYPT_NAME(sn) && crypto_name) { 641 if(DAV_DECRYPT_NAME(sn) && crypto_name) {
642 if(!crypto_key) { 642 if(!crypto_key) {
643 // TODO: error 643 sn->error = DAV_ERROR;
644 fprintf(stderr, "encrypted resource without key\n"); 644 dav_session_set_errstr(sn, "Missing crypto-key property");
645 return -1;
645 } 646 }
646 name = util_decrypt_str(sn, crypto_name, crypto_key); 647 name = util_decrypt_str(sn, crypto_name, crypto_key);
647 if(!name) { 648 if(!name) {
648 // TODO: error 649 sn->error = DAV_ERROR;
649 fprintf(stderr, "decrypted name is null\n"); 650 dav_session_set_errstr(sn, "Cannot decrypt resource name");
651 return -1;
650 } 652 }
651 } else { 653 } else {
652 sstr_t resname = sstr(util_resource_name(href)); 654 sstr_t resname = sstr(util_resource_name(href));
653 int nlen = 0; 655 int nlen = 0;
654 char *uname = curl_easy_unescape( 656 char *uname = curl_easy_unescape(

mercurial