use crate::dav::{ffi, utils};
use crate::dav::ffi::{DavReadFunc, DavSeekFunc, DavWriteFunc};
use crate::dav::session::{get_session_error, DavError, Session};
+use crate::dav::xml::XmlNodeRef;
pub struct Resource<'a> {
pub base: ResourceRef<'a>
}
}
+ pub fn get_property(&self, namespace: &str, name: &str) -> XmlNodeRef<'_> {
+ let ns_cstr = CString::new(namespace).unwrap();
+ let name_cstr = CString::new(name).unwrap();
+ unsafe {
+ let node_ptr = dav_get_property_ns(self.ptr, ns_cstr.as_ptr(), name_cstr.as_ptr());
+ XmlNodeRef::from_ptr(node_ptr)
+ }
+ }
+
+ pub fn get_prefixed_property(&self, prefixed_name: &str) -> XmlNodeRef<'_> {
+ let prefixed_name_cstr = CString::new(prefixed_name).unwrap();
+ unsafe {
+ let node_ptr = dav_get_property(self.ptr, prefixed_name_cstr.as_ptr());
+ XmlNodeRef::from_ptr(node_ptr)
+ }
+ }
+
+ pub fn set_property(&self, namespace: &str, name: &str, value: &XmlNodeRef) {
+ let ns_cstr = CString::new(namespace).unwrap();
+ let name_cstr = CString::new(name).unwrap();
+ unsafe {
+ dav_set_property_ns(self.ptr, ns_cstr.as_ptr(), name_cstr.as_ptr(), value.ptr);
+ }
+ }
+
+ pub fn set_prefixed_property(&self, prefixed_name: &str, value: &XmlNodeRef) {
+ let prefixed_name_cstr = CString::new(prefixed_name).unwrap();
+ unsafe {
+ dav_set_property(self.ptr, prefixed_name_cstr.as_ptr(), value.ptr);
+ }
+ }
+
+
pub fn set_string_property(&self, namespace: &str, name: &str, value: &str) {
let cstr_ns = CString::new(namespace).unwrap();
let cstr_name = CString::new(name).unwrap();
fn dav_lock_t(res: *mut ffi::DavResource, timeout: libc::time_t) -> c_int;
fn dav_unlock(res: *mut ffi::DavResource) -> c_int;
+ fn dav_get_property(res: *mut ffi::DavResource, property: *const c_char) -> *mut ffi::DavXmlNode;
+ fn dav_get_property_ns(res: *mut ffi::DavResource, namespace: *const c_char, property: *const c_char) -> *mut ffi::DavXmlNode;
+ fn dav_set_property(res: *mut ffi::DavResource, property: *const c_char, value: *mut ffi::DavXmlNode);
+ fn dav_set_property_ns(res: *mut ffi::DavResource, namespace: *const c_char, property: *const c_char, value: *mut ffi::DavXmlNode);
fn dav_get_string_property(res: *mut ffi::DavResource, property: *const c_char) -> *mut c_char;
fn dav_get_string_property_ns(res: *mut ffi::DavResource, namespace: *const c_char, property: *const c_char) -> *mut c_char;
fn dav_set_string_property(res: *mut ffi::DavResource, property: *const c_char, value: *const c_char);