SetResponse

Struct SetResponse 

Source
pub struct SetResponse<O: SetObject> { /* private fields */ }

Implementations§

Source§

impl<O: SetObject> SetResponse<O>

Source

pub fn account_id(&self) -> Option<&str>

Source

pub fn old_state(&self) -> Option<&str>

Source

pub fn new_state(&self) -> &str

Source

pub fn take_new_state(&mut self) -> String

Source

pub fn created(&mut self, id: &str) -> Result<O>

Examples found in repository?
examples/websocket.rs (line 66)
25async fn websocket() {
26    // Connect to the JMAP server using Basic authentication
27
28    use jmap_client::PushObject;
29
30    let client = Client::new()
31        .credentials(("john@example.org", "secret"))
32        .connect("https://jmap.example.org")
33        .await
34        .unwrap();
35
36    // Connect to the WebSocket endpoint
37    let mut ws_stream = client.connect_ws().await.unwrap();
38
39    // Read WS messages on a separate thread
40    let (stream_tx, mut stream_rx) = mpsc::channel::<WebSocketMessage>(100);
41    tokio::spawn(async move {
42        while let Some(change) = ws_stream.next().await {
43            stream_tx.send(change.unwrap()).await.unwrap();
44        }
45    });
46
47    // Create a mailbox over WS
48    let mut request = client.build();
49    let create_id = request
50        .set_mailbox()
51        .create()
52        .name("WebSocket Test")
53        .create_id()
54        .unwrap();
55    let request_id = request.send_ws().await.unwrap();
56
57    // Read response from WS stream
58    let mailbox_id = if let Some(WebSocketMessage::Response(mut response)) = stream_rx.recv().await
59    {
60        assert_eq!(request_id, response.request_id().unwrap());
61        response
62            .pop_method_response()
63            .unwrap()
64            .unwrap_set_mailbox()
65            .unwrap()
66            .created(&create_id)
67            .unwrap()
68            .take_id()
69    } else {
70        unreachable!()
71    };
72
73    // Enable push notifications over WS
74    client
75        .enable_push_ws(None::<Vec<_>>, None::<&str>)
76        .await
77        .unwrap();
78
79    // Make changes over standard HTTP and expect a push notification via WS
80    client
81        .mailbox_update_sort_order(&mailbox_id, 1)
82        .await
83        .unwrap();
84    if let Some(WebSocketMessage::PushNotification(PushObject::StateChange { changed })) =
85        stream_rx.recv().await
86    {
87        println!("Received changes: {:?}", changed);
88    } else {
89        unreachable!()
90    }
91}
Source

pub fn updated(&mut self, id: &str) -> Result<Option<O>>

Source

pub fn destroyed(&mut self, id: &str) -> Result<()>

Source

pub fn created_ids(&self) -> Option<impl Iterator<Item = &String>>

Source

pub fn updated_ids(&self) -> Option<impl Iterator<Item = &String>>

Source

pub fn take_updated_ids(&mut self) -> Option<Vec<String>>

Source

pub fn destroyed_ids(&self) -> Option<impl Iterator<Item = &String>>

Source

pub fn take_destroyed_ids(&mut self) -> Option<Vec<String>>

Examples found in repository?
examples/result_reference.rs (line 47)
20async fn result_reference() {
21    // Connect to the JMAP server using Basic authentication
22    let client = Client::new()
23        .credentials(("john@example.org", "secret"))
24        .connect("https://jmap.example.org")
25        .await
26        .unwrap();
27
28    // Delete e-mails matching a filter
29    let mut request = client.build();
30    let result_ref = request
31        .query_email()
32        .filter(query::Filter::and([
33            email::query::Filter::has_keyword("$draft"),
34            email::query::Filter::from("bill"),
35        ]))
36        .result_reference();
37    request.set_email().destroy_ref(result_ref);
38    let _destroyed_ids = request
39        .send()
40        .await
41        .unwrap()
42        .unwrap_method_responses()
43        .pop()
44        .unwrap()
45        .unwrap_set_email()
46        .unwrap()
47        .take_destroyed_ids();
48
49    // Fetch mailboxes matching a filter
50    let mut request = client.build();
51    let query_result = request
52        .query_mailbox()
53        .filter(query::Filter::and([
54            mailbox::query::Filter::has_any_role(false),
55            mailbox::query::Filter::is_subscribed(true),
56        ]))
57        .result_reference();
58    request.get_mailbox().ids_ref(query_result).properties([
59        mailbox::Property::Id,
60        mailbox::Property::Name,
61        mailbox::Property::ParentId,
62        mailbox::Property::TotalEmails,
63        mailbox::Property::UnreadEmails,
64    ]);
65    let _mailboxes = request
66        .send()
67        .await
68        .unwrap()
69        .unwrap_method_responses()
70        .pop()
71        .unwrap()
72        .unwrap_get_mailbox()
73        .unwrap()
74        .take_list();
75
76    // Fetch only the updated properties of all mailboxes that changed
77    // since a state.
78    let mut request = client.build();
79    let changes_request = request.changes_mailbox("n").max_changes(0);
80    let properties_ref = changes_request.updated_properties_reference();
81    let updated_ref = changes_request.updated_reference();
82    request
83        .get_mailbox()
84        .ids_ref(updated_ref)
85        .properties_ref(properties_ref);
86    for mailbox in request
87        .send()
88        .await
89        .unwrap()
90        .unwrap_method_responses()
91        .pop()
92        .unwrap()
93        .unwrap_get_mailbox()
94        .unwrap()
95        .take_list()
96    {
97        println!("Changed mailbox: {:#?}", mailbox);
98    }
99}
Source

pub fn not_created_ids(&self) -> Option<impl Iterator<Item = &String>>

Source

pub fn not_updated_ids(&self) -> Option<impl Iterator<Item = &String>>

Source

pub fn not_destroyed_ids(&self) -> Option<impl Iterator<Item = &String>>

Source

pub fn has_updated(&self) -> bool

Source

pub fn has_created(&self) -> bool

Source

pub fn has_destroyed(&self) -> bool

Source

pub fn unwrap_update_errors(&self) -> Result<()>

Source

pub fn unwrap_create_errors(&self) -> Result<()>

Trait Implementations§

Source§

impl<O: Clone + SetObject> Clone for SetResponse<O>
where O::Property: Clone,

Source§

fn clone(&self) -> SetResponse<O>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<O: Debug + SetObject> Debug for SetResponse<O>
where O::Property: Debug,

Source§

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

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

impl<'de, O> Deserialize<'de> for SetResponse<O>
where O: Deserialize<'de> + SetObject,

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more

Auto Trait Implementations§

§

impl<O> Freeze for SetResponse<O>

§

impl<O> RefUnwindSafe for SetResponse<O>

§

impl<O> Send for SetResponse<O>
where O: Send, <O as Object>::Property: Send,

§

impl<O> Sync for SetResponse<O>
where O: Sync, <O as Object>::Property: Sync,

§

impl<O> Unpin for SetResponse<O>
where O: Unpin, <O as Object>::Property: Unpin,

§

impl<O> UnwindSafe for SetResponse<O>
where O: UnwindSafe, <O as Object>::Property: UnwindSafe,

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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 T
where 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<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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 T
where 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
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,