598 |
599 |
599 return names; |
600 return names; |
600 } |
601 } |
601 |
602 |
602 |
603 |
603 void dav_set_content(DavResource *res, void *stream, dav_read_func read_func) { |
604 void dav_set_content(DavResource *res, void *stream, dav_read_func read_func, dav_seek_func seek_func) { |
604 DavResourceData *data = res->data; |
605 DavResourceData *data = res->data; |
605 data->content = stream; |
606 data->content = stream; |
606 data->read = read_func; |
607 data->read = read_func; |
|
608 data->seek = seek_func; |
607 data->length = 0; |
609 data->length = 0; |
608 } |
610 } |
609 |
611 |
610 void dav_set_content_data(DavResource *res, char *content, size_t length) { |
612 void dav_set_content_data(DavResource *res, char *content, size_t length) { |
611 DavSession *sn = res->session; |
613 DavSession *sn = res->session; |
612 DavResourceData *data = res->data; |
614 DavResourceData *data = res->data; |
613 data->content = dav_session_malloc(sn, length); |
615 data->content = dav_session_malloc(sn, length); |
614 memcpy(data->content, content, length); |
616 memcpy(data->content, content, length); |
615 data->read = NULL; |
617 data->read = NULL; |
|
618 data->seek = NULL; |
616 data->length = length; |
619 data->length = length; |
617 } |
620 } |
618 |
621 |
619 void dav_set_content_length(DavResource *res, size_t length) { |
622 void dav_set_content_length(DavResource *res, size_t length) { |
620 DavResourceData *data = res->data; |
623 DavResourceData *data = res->data; |
669 CURLcode ret; |
672 CURLcode ret; |
670 if(encryption) { |
673 if(encryption) { |
671 AESEncrypter *enc = NULL; |
674 AESEncrypter *enc = NULL; |
672 UcxBuffer *buf = NULL; |
675 UcxBuffer *buf = NULL; |
673 if(data->read) { |
676 if(data->read) { |
674 enc = aes_encrypter_new(sn->key, data->content, data->read); |
677 enc = aes_encrypter_new( |
|
678 sn->key, |
|
679 data->content, |
|
680 data->read, |
|
681 data->seek); |
675 } else { |
682 } else { |
676 buf = ucx_buffer_new(data->content, data->length, 0); |
683 buf = ucx_buffer_new(data->content, data->length, 0); |
677 buf->size = data->length; |
684 buf->size = data->length; |
678 enc = aes_encrypter_new( |
685 enc = aes_encrypter_new( |
679 sn->key, |
686 sn->key, |
680 buf, |
687 buf, |
681 (dav_read_func)ucx_buffer_read); |
688 (dav_read_func)ucx_buffer_read, |
|
689 (dav_seek_func)dav_buffer_seek); |
682 } |
690 } |
683 |
691 |
684 // put resource |
692 // put resource |
685 ret = do_put_request( |
693 ret = do_put_request( |
686 sn, |
694 sn, |
687 locktoken, |
695 locktoken, |
688 TRUE, |
696 TRUE, |
689 enc, |
697 enc, |
690 (dav_read_func)aes_read, |
698 (dav_read_func)aes_read, |
|
699 (dav_seek_func)aes_encrypter_reset, |
691 0); |
700 0); |
692 |
701 |
693 // get sha256 hash |
702 // get sha256 hash |
694 unsigned char sha[DAV_SHA256_DIGEST_LENGTH]; |
703 unsigned char sha[DAV_SHA256_DIGEST_LENGTH]; |
695 dav_get_hash(&enc->sha256, sha); |
704 dav_get_hash(&enc->sha256, sha); |
975 |
985 |
976 CURLcode code; |
986 CURLcode code; |
977 if(res->iscollection) { |
987 if(res->iscollection) { |
978 code = do_mkcol_request(sn, locktoken); |
988 code = do_mkcol_request(sn, locktoken); |
979 } else { |
989 } else { |
980 code = do_put_request(sn, locktoken, TRUE, "", NULL, 0); |
990 code = do_put_request(sn, locktoken, TRUE, "", NULL, NULL, 0); |
981 } |
991 } |
982 long s = 0; |
992 long s = 0; |
983 curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &s); |
993 curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &s); |
984 *status = s; |
994 *status = s; |
985 if(code == CURLE_OK && (s >= 200 && s < 300)) { |
995 if(code == CURLE_OK && (s >= 200 && s < 300)) { |