630 return 1; |
632 return 1; |
631 } |
633 } |
632 } |
634 } |
633 |
635 |
634 // store properties |
636 // store properties |
|
637 int r = 0; |
|
638 sn->error = DAV_OK; |
635 if(data->set || data->remove) { |
639 if(data->set || data->remove) { |
636 UcxBuffer *request = create_proppatch_request(data); |
640 UcxBuffer *request = create_proppatch_request(data); |
637 UcxBuffer *response = ucx_buffer_new(NULL, 1024, UCX_BUFFER_AUTOEXTEND); |
641 UcxBuffer *response = ucx_buffer_new(NULL, 1024, UCX_BUFFER_AUTOEXTEND); |
638 //printf("request:\n%.*s\n\n", request->pos, request->space); |
642 //printf("request:\n%.*s\n\n", request->pos, request->space); |
639 |
643 |
646 // TODO: cleanup node data correctly |
650 // TODO: cleanup node data correctly |
647 data->set = NULL; |
651 data->set = NULL; |
648 data->remove = NULL; |
652 data->remove = NULL; |
649 } else { |
653 } else { |
650 dav_session_set_error(sn, ret, status); |
654 dav_session_set_error(sn, ret, status); |
651 return 1; |
655 r = -1; |
652 } |
656 } |
653 } |
657 |
654 sn->error = DAV_OK; |
658 ucx_buffer_free(request); |
655 return 0; |
659 ucx_buffer_free(response); |
|
660 } |
|
661 |
|
662 return r; |
656 } |
663 } |
657 |
664 |
658 int dav_get_content(DavResource *res, void *stream, dav_write_func write_fnc) { |
665 int dav_get_content(DavResource *res, void *stream, dav_write_func write_fnc) { |
659 DavSession *sn = res->session; |
666 DavSession *sn = res->session; |
660 CURL *handle = sn->handle; |
667 CURL *handle = sn->handle; |
755 |
762 |
756 UcxBuffer *response = ucx_buffer_new(NULL, 4096, UCX_BUFFER_AUTOEXTEND); |
763 UcxBuffer *response = ucx_buffer_new(NULL, 4096, UCX_BUFFER_AUTOEXTEND); |
757 CURLcode ret = do_delete_request(handle, locktoken, response); |
764 CURLcode ret = do_delete_request(handle, locktoken, response); |
758 long status = 0; |
765 long status = 0; |
759 curl_easy_getinfo (handle, CURLINFO_RESPONSE_CODE, &status); |
766 curl_easy_getinfo (handle, CURLINFO_RESPONSE_CODE, &status); |
|
767 int r = 0; |
760 if(ret == CURLE_OK && (status >= 200 && status < 300)) { |
768 if(ret == CURLE_OK && (status >= 200 && status < 300)) { |
761 res->session->error = DAV_OK; |
769 res->session->error = DAV_OK; |
762 |
770 |
763 // TODO: parse response |
771 // TODO: parse response |
764 // TODO: free res |
772 // TODO: free res |
765 |
|
766 return 0; |
|
767 } else { |
773 } else { |
768 dav_session_set_error(res->session, ret, status); |
774 dav_session_set_error(res->session, ret, status); |
769 return 1; |
775 r = 1; |
770 } |
776 } |
|
777 |
|
778 ucx_buffer_free(response); |
|
779 return r; |
771 } |
780 } |
772 |
781 |
773 static int create_ancestors(DavSession *sn, char *href, char *path) { |
782 static int create_ancestors(DavSession *sn, char *href, char *path) { |
774 CURL *handle = sn->handle; |
783 CURL *handle = sn->handle; |
775 CURLcode code; |
784 CURLcode code; |
833 |
842 |
834 CURLcode code; |
843 CURLcode code; |
835 if(res->iscollection) { |
844 if(res->iscollection) { |
836 code = do_mkcol_request(handle, locktoken); |
845 code = do_mkcol_request(handle, locktoken); |
837 } else { |
846 } else { |
838 code = do_put_request(handle, locktoken, "", NULL, 0); |
847 code = do_put_request(handle, locktoken, TRUE, "", NULL, 0); |
839 } |
848 } |
840 long s = 0; |
849 long s = 0; |
841 curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &s); |
850 curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &s); |
842 *status = s; |
851 *status = s; |
843 if(code == CURLE_OK && (s >= 200 && s < 300)) { |
852 if(code == CURLE_OK && (s >= 200 && s < 300)) { |