Struct vstorage::base::VcardItem

source ·
pub struct VcardItem { /* private fields */ }
Expand description

Immutable wrapper around a VCARD.

Note that this is not a proper validating parser for vcard; it’s a very simple one with the sole purpose of extracing a UID. Proper parsing of components is out of scope, since we want to enable operating on potentially invalid items too.

Trait Implementations§

source§

impl Debug for VcardItem

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<C> Definition<VcardItem> for CardDavDefinition<C>where C: Connect + Send + Sync + Clone + 'static + Debug,

source§

fn build_boxed<'async_trait>( self ) -> Pin<Box<dyn Future<Output = Result<Box<dyn Storage<VcardItem>>, Error>> + Send + 'async_trait>>where Self: 'async_trait,

Returns a new storage instance wrapped in a box. Read more
source§

impl From<String> for VcardItem

source§

fn from(value: String) -> Self

Converts to this type from the input type.
source§

impl Item for VcardItem

source§

fn uid(&self) -> Option<String>

Returns a unique identifier for this item.

The UID does not change when the item is modified. The UID must remain the same when the item is copied across storages and storage types.

source§

fn hash(&self) -> String

Returns the hash of the raw content.

This is used as a fallback when a storage backend doesn’t provide Etag values, or when an item is missing its UID.

source§

fn ident(&self) -> String

A unique identifier for this item. Is either the UID (if any), or the hash of its contents.

source§

fn with_uid(&self, _new_uid: &str) -> Self

Returns a new copy of this Item with the supplied UID.

Panics

This function is not yet implemented.

source§

fn as_str(&self) -> &str

Returns the raw contents of this item.

§

type CollectionProperty = AddressBookProperty

Property types supported by storages. Read more
source§

impl<C> Storage<VcardItem> for CardDavStorage<C>where C: Connect + Clone + Sync + Send,

source§

fn discover_collections<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Result<Vec<Collection>, 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. 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 can still be found by providing an absolute path to CardDavStorage::open_collection.

source§

fn create_collection_with_id<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 CollectionId ) -> Pin<Box<dyn Future<Output = Result<Collection, Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Create a new address book such that its collection_id matches the given input.

Errors

Returns ErrorKind::PreconditionFailed if a home set was not found in the carddav server.

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,

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 address book components are added to the collection at the same time, they may be deleted.

source§

fn set_collection_property<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, collection: &'life1 Collection, meta: 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,

Panics

Only DisplayName is implemented.

source§

fn get_collection_property<'life0, 'life1, 'async_trait>( &'life0 self, collection: &'life1 Collection, meta: 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.

Panics

Only DisplayName is implemented.

source§

fn collection_id(&self, collection: &Collection) -> Result<CollectionId, Error>

The collection_id of a carddav collection is the last component of the path.

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,

Checks that the storage works. This includes validating credentials, and reachability. Read more
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,

Creates a new collection with a specified href. Read more
source§

fn open_collection(&self, href: &str) -> Result<Collection, Error>

Open an existing collection. Read more
source§

fn list_items<'life0, 'life1, 'async_trait>( &'life0 self, collection: &'life1 Collection ) -> Pin<Box<dyn Future<Output = Result<Vec<ItemRef>, Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Enumerates items in a given collection.
source§

fn get_item<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, collection: &'life1 Collection, href: &'life2 str ) -> Pin<Box<dyn Future<Output = Result<(VcardItem, Etag), Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Fetches a single item from given collection. Read more
source§

fn get_many_items<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, collection: &'life1 Collection, hrefs: &'life2 [&'life3 str] ) -> Pin<Box<dyn Future<Output = Result<Vec<(Href, VcardItem, Etag)>, Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Fetches multiple items. Read more
source§

fn get_all_items<'life0, 'life1, 'async_trait>( &'life0 self, collection: &'life1 Collection ) -> Pin<Box<dyn Future<Output = Result<Vec<(Href, VcardItem, Etag)>, Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Fetch all items from a given collection.
source§

fn add_item<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, collection: &'life1 Collection, item: &'life2 VcardItem ) -> Pin<Box<dyn Future<Output = Result<ItemRef, Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Saves a new item into a given collection
source§

fn update_item<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, _collection: &'life1 Collection, href: &'life2 str, etag: &'life3 Etag, item: &'life4 VcardItem ) -> Pin<Box<dyn Future<Output = Result<Etag, Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait,

Updates an existing item in a given collection.
source§

fn delete_item<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, _collection: &'life1 Collection, href: &'life2 str, etag: &'life3 Etag ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<Source, Target> OctetsInto<Target> for Sourcewhere Target: OctetsFrom<Source>,

§

type Error = <Target as OctetsFrom<Source>>::Error

source§

fn try_octets_into( self ) -> Result<Target, <Source as OctetsInto<Target>>::Error>

Performs the conversion.
source§

fn octets_into(self) -> Targetwhere Self::Error: Into<Infallible>,

Performs an infallible conversion.
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more