pub struct CardDavStorage<C>where
C: Service<Request<String>, Response = Response<Incoming>> + Send + Sync + 'static,
C::Error: Error + Send + Sync,
C::Future: Send + Sync,{ /* private fields */ }
Expand description
A storage backed by a carddav server.
A single storage represents a single server with a specific set of credentials.
Implementations§
source§impl<C> CardDavStorage<C>
impl<C> CardDavStorage<C>
sourcepub async fn new(client: CardDavClient<C>) -> Result<CardDavStorage<C>, Error>
pub async fn new(client: CardDavClient<C>) -> Result<CardDavStorage<C>, Error>
Trait Implementations§
source§impl<C> Storage<VcardItem> for CardDavStorage<C>
impl<C> Storage<VcardItem> for CardDavStorage<C>
source§fn discover_collections<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Discovery, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn discover_collections<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Discovery, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Finds existing collections for this storage.
Will only return collections stored under the principal’s home set. In most common scenarios, this implies that only collections owned by the current user are found and not other collections.
Collections outside the principal’s home set can be referenced by using an absolute path.
source§fn destroy_collection<'life0, 'life1, 'async_trait>(
&'life0 self,
href: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn destroy_collection<'life0, 'life1, 'async_trait>(
&'life0 self,
href: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Deletes a carddav collection.
This method does multiple network calls to ensure that the collection is empty. If the
server property supports Etag
(it MUST as per the spec), this method guarantees that the
collection is empty when deleting it.
If the server is not compliant and does not support Etags, possible race conditions could occur and if contacts components are added to the collection concurrently, they may be deleted.
source§fn set_property<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
href: &'life1 str,
prop: AddressBookProperty,
value: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn set_property<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
href: &'life1 str,
prop: AddressBookProperty,
value: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
§Errors
Only DisplayName
is implemented.
source§fn unset_property<'life0, 'life1, 'async_trait>(
&'life0 self,
href: &'life1 str,
prop: AddressBookProperty,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn unset_property<'life0, 'life1, 'async_trait>(
&'life0 self,
href: &'life1 str,
prop: AddressBookProperty,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
§Errors
Only DisplayName
is implemented.
source§fn get_property<'life0, 'life1, 'async_trait>(
&'life0 self,
href: &'life1 str,
prop: AddressBookProperty,
) -> Pin<Box<dyn Future<Output = Result<Option<String>, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_property<'life0, 'life1, 'async_trait>(
&'life0 self,
href: &'life1 str,
prop: AddressBookProperty,
) -> Pin<Box<dyn Future<Output = Result<Option<String>, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Read metadata from a collection.
Metadata is fetched using the PROPFIND
method under the hood. Some servers may not
support some properties.
§Errors
If the underlying HTTP connection fails or if the server returns invalid data.
Only DisplayName
is implemented.
source§fn href_for_collection_id(&self, id: &CollectionId) -> Result<Href, Error>
fn href_for_collection_id(&self, id: &CollectionId) -> Result<Href, Error>
§Errors
Returns ErrorKind::PreconditionFailed
if a home set was not found in the carddav
server.
source§fn check<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn check<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn create_collection<'life0, 'life1, 'async_trait>(
&'life0 self,
href: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Collection, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_collection<'life0, 'life1, 'async_trait>(
&'life0 self,
href: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Collection, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
href
.