pub struct JmapClientStd {
pub stream: Box<dyn JmapStream>,
pub http_auth: SecretString,
pub session: Option<JmapSession>,
}client only.Expand description
Std-blocking JMAP client wrapping a single boxed stream.
Fields§
§stream: Box<dyn JmapStream>§http_auth: SecretString§session: Option<JmapSession>Implementations§
Source§impl JmapClientStd
impl JmapClientStd
Sourcepub fn new<S: Read + Write + Send + 'static>(
stream: S,
http_auth: SecretString,
) -> Self
pub fn new<S: Read + Write + Send + 'static>( stream: S, http_auth: SecretString, ) -> Self
Builds a client around stream. The caller is responsible for opening
the connection (TCP, TLS handshake if needed) and for the bearer token /
authorization header value.
Sourcepub fn run<C, T, E>(&mut self, coroutine: C) -> Result<T, JmapClientStdError>
pub fn run<C, T, E>(&mut self, coroutine: C) -> Result<T, JmapClientStdError>
Drives any standard-shape coroutine (Yield = JmapYield) against the
wrapped stream until it terminates.
Redirect-aware coroutines (JmapSessionGet, JmapBlobUpload,
JmapBlobDownload) and the streaming
JmapEventSource
have their own per-method loops.
Sourcepub fn from_parts<S: Read + Write + Send + 'static>(
stream: S,
http_auth: SecretString,
session: JmapSession,
) -> Self
pub fn from_parts<S: Read + Write + Send + 'static>( stream: S, http_auth: SecretString, session: JmapSession, ) -> Self
Builds a client from a pre-connected stream and an already-discovered
JmapSession. Skips Self::session_get.
Sourcepub fn connect(
url: &Url,
tls: &Tls,
http_auth: SecretString,
) -> Result<Self, JmapClientStdError>
Available on crate features native-tls or rustls-aws or rustls-ring only.
pub fn connect( url: &Url, tls: &Tls, http_auth: SecretString, ) -> Result<Self, JmapClientStdError>
native-tls or rustls-aws or rustls-ring only.Connects to url, doing a TLS handshake for https / jmaps (plain
TCP for http / jmap). ALPN comes from tls.rustls.alpn (see
default_alpn); empty vec skips ALPN.
Sourcepub fn set_stream<S: Read + Write + Send + 'static>(&mut self, stream: S)
pub fn set_stream<S: Read + Write + Send + 'static>(&mut self, stream: S)
Replaces the underlying stream; useful when apiUrl, uploadUrl or
downloadUrl resolves to a different authority than the first
connection target, or after a redirect.
Sourcepub fn session(&self) -> Option<&JmapSession>
pub fn session(&self) -> Option<&JmapSession>
Returns the cached session, if Self::session_get has run.
Sourcepub fn http_auth(&self) -> &SecretString
pub fn http_auth(&self) -> &SecretString
Returns the pre-formatted HTTP Authorization header value.
Sourcepub fn session_get(
&mut self,
url: &Url,
) -> Result<&JmapSession, JmapClientStdError>
pub fn session_get( &mut self, url: &Url, ) -> Result<&JmapSession, JmapClientStdError>
Runs JmapSessionGet and caches the discovered session.
url is either a base URL for /.well-known/jmap discovery or a
direct session endpoint. A 3xx response terminates with
JmapClientStdError::UnexpectedRedirect.
Sourcepub fn send_raw(
&mut self,
request: JmapRequest,
) -> Result<JmapResponse, JmapClientStdError>
pub fn send_raw( &mut self, request: JmapRequest, ) -> Result<JmapResponse, JmapClientStdError>
Sends a raw JMAP request and returns the raw JmapResponse. Useful
for passthrough CLIs and ad-hoc requests with custom using
capabilities.
Sourcepub fn blob_upload(
&mut self,
upload_url: &Url,
content_type: &str,
data: Vec<u8>,
) -> Result<JmapBlobUploadOutput, JmapClientStdError>
pub fn blob_upload( &mut self, upload_url: &Url, content_type: &str, data: Vec<u8>, ) -> Result<JmapBlobUploadOutput, JmapClientStdError>
Uploads a blob to upload_url (RFC 8620 §6.1). The caller must resolve
the session’s uploadUrl template (e.g. substitute {accountId}).
A 3xx response terminates with JmapClientStdError::UnexpectedRedirect.
Sourcepub fn blob_download(
&mut self,
download_url: &Url,
) -> Result<Vec<u8>, JmapClientStdError>
pub fn blob_download( &mut self, download_url: &Url, ) -> Result<Vec<u8>, JmapClientStdError>
Downloads a blob from download_url (RFC 8620 §6.2). The caller must
resolve the session’s downloadUrl template. A 3xx response terminates
with JmapClientStdError::UnexpectedRedirect.
Sourcepub fn mailbox_get(
&mut self,
opts: JmapMailboxGetOptions,
) -> Result<JmapMailboxGetOutput, JmapClientStdError>
pub fn mailbox_get( &mut self, opts: JmapMailboxGetOptions, ) -> Result<JmapMailboxGetOutput, JmapClientStdError>
Runs JmapMailboxGet (Mailbox/get).
Sourcepub fn mailbox_query(
&mut self,
opts: JmapMailboxQueryOptions,
) -> Result<JmapMailboxQueryOutput, JmapClientStdError>
pub fn mailbox_query( &mut self, opts: JmapMailboxQueryOptions, ) -> Result<JmapMailboxQueryOutput, JmapClientStdError>
Runs JmapMailboxQuery (batched Mailbox/query +
Mailbox/get).
Sourcepub fn mailbox_set(
&mut self,
args: JmapMailboxSetArgs,
) -> Result<JmapMailboxSetOutput, JmapClientStdError>
pub fn mailbox_set( &mut self, args: JmapMailboxSetArgs, ) -> Result<JmapMailboxSetOutput, JmapClientStdError>
Runs JmapMailboxSet (Mailbox/set).
Sourcepub fn mailbox_changes(
&mut self,
since_state: impl Into<String>,
opts: JmapMailboxChangesOptions,
) -> Result<JmapChangesOutput, JmapClientStdError>
pub fn mailbox_changes( &mut self, since_state: impl Into<String>, opts: JmapMailboxChangesOptions, ) -> Result<JmapChangesOutput, JmapClientStdError>
Runs JmapMailboxChanges (Mailbox/changes).
Sourcepub fn email_get(
&mut self,
ids: Vec<String>,
opts: JmapEmailGetOptions,
) -> Result<JmapEmailGetOutput, JmapClientStdError>
pub fn email_get( &mut self, ids: Vec<String>, opts: JmapEmailGetOptions, ) -> Result<JmapEmailGetOutput, JmapClientStdError>
Runs JmapEmailGet (Email/get).
Sourcepub fn email_query(
&mut self,
opts: JmapEmailQueryOptions,
) -> Result<JmapEmailQueryOutput, JmapClientStdError>
pub fn email_query( &mut self, opts: JmapEmailQueryOptions, ) -> Result<JmapEmailQueryOutput, JmapClientStdError>
Runs JmapEmailQuery (batched Email/query + Email/get).
Sourcepub fn email_set(
&mut self,
args: JmapEmailSetArgs,
) -> Result<JmapEmailSetOutput, JmapClientStdError>
pub fn email_set( &mut self, args: JmapEmailSetArgs, ) -> Result<JmapEmailSetOutput, JmapClientStdError>
Runs JmapEmailSet (Email/set).
Sourcepub fn email_changes(
&mut self,
since_state: impl Into<String>,
opts: JmapEmailChangesOptions,
) -> Result<JmapChangesOutput, JmapClientStdError>
pub fn email_changes( &mut self, since_state: impl Into<String>, opts: JmapEmailChangesOptions, ) -> Result<JmapChangesOutput, JmapClientStdError>
Runs JmapEmailChanges (Email/changes).
Sourcepub fn email_copy(
&mut self,
from_account_id: impl Into<String>,
emails: BTreeMap<String, JmapEmailCopyArgs>,
) -> Result<JmapEmailCopyOutput, JmapClientStdError>
pub fn email_copy( &mut self, from_account_id: impl Into<String>, emails: BTreeMap<String, JmapEmailCopyArgs>, ) -> Result<JmapEmailCopyOutput, JmapClientStdError>
Runs JmapEmailCopy (Email/copy).
Sourcepub fn email_import(
&mut self,
emails: BTreeMap<String, JmapEmailImportArgs>,
) -> Result<JmapEmailImportOutput, JmapClientStdError>
pub fn email_import( &mut self, emails: BTreeMap<String, JmapEmailImportArgs>, ) -> Result<JmapEmailImportOutput, JmapClientStdError>
Runs JmapEmailImport (Email/import).
Sourcepub fn email_parse(
&mut self,
blob_ids: Vec<String>,
opts: JmapEmailParseOptions,
) -> Result<JmapEmailParseOutput, JmapClientStdError>
pub fn email_parse( &mut self, blob_ids: Vec<String>, opts: JmapEmailParseOptions, ) -> Result<JmapEmailParseOutput, JmapClientStdError>
Runs JmapEmailParse (Email/parse).
Sourcepub fn thread_get(
&mut self,
ids: Vec<String>,
) -> Result<JmapThreadGetOutput, JmapClientStdError>
pub fn thread_get( &mut self, ids: Vec<String>, ) -> Result<JmapThreadGetOutput, JmapClientStdError>
Runs JmapThreadGet (Thread/get).
Sourcepub fn thread_changes(
&mut self,
since_state: impl Into<String>,
opts: JmapThreadChangesOptions,
) -> Result<JmapChangesOutput, JmapClientStdError>
pub fn thread_changes( &mut self, since_state: impl Into<String>, opts: JmapThreadChangesOptions, ) -> Result<JmapChangesOutput, JmapClientStdError>
Runs JmapThreadChanges (Thread/changes).
Sourcepub fn identity_get(
&mut self,
opts: JmapIdentityGetOptions,
) -> Result<JmapIdentityGetOutput, JmapClientStdError>
pub fn identity_get( &mut self, opts: JmapIdentityGetOptions, ) -> Result<JmapIdentityGetOutput, JmapClientStdError>
Runs JmapIdentityGet (Identity/get).
Sourcepub fn identity_set(
&mut self,
args: JmapIdentitySetArgs,
) -> Result<JmapIdentitySetOutput, JmapClientStdError>
pub fn identity_set( &mut self, args: JmapIdentitySetArgs, ) -> Result<JmapIdentitySetOutput, JmapClientStdError>
Runs JmapIdentitySet (Identity/set).
Sourcepub fn email_submission_get(
&mut self,
opts: JmapEmailSubmissionGetOptions,
) -> Result<JmapEmailSubmissionGetOutput, JmapClientStdError>
pub fn email_submission_get( &mut self, opts: JmapEmailSubmissionGetOptions, ) -> Result<JmapEmailSubmissionGetOutput, JmapClientStdError>
Runs JmapEmailSubmissionGet (EmailSubmission/get).
Sourcepub fn email_submission_query(
&mut self,
opts: JmapEmailSubmissionQueryOptions,
) -> Result<JmapEmailSubmissionQueryOutput, JmapClientStdError>
pub fn email_submission_query( &mut self, opts: JmapEmailSubmissionQueryOptions, ) -> Result<JmapEmailSubmissionQueryOutput, JmapClientStdError>
Runs JmapEmailSubmissionQuery (batched
EmailSubmission/query + EmailSubmission/get).
Sourcepub fn email_submission_set(
&mut self,
submissions: BTreeMap<String, JmapEmailSubmissionCreate>,
) -> Result<JmapEmailSubmissionSetOutput, JmapClientStdError>
pub fn email_submission_set( &mut self, submissions: BTreeMap<String, JmapEmailSubmissionCreate>, ) -> Result<JmapEmailSubmissionSetOutput, JmapClientStdError>
Runs JmapEmailSubmissionSet (EmailSubmission/set).
Sourcepub fn email_submission_cancel(
&mut self,
ids: Vec<String>,
) -> Result<JmapEmailSubmissionCancelOutput, JmapClientStdError>
pub fn email_submission_cancel( &mut self, ids: Vec<String>, ) -> Result<JmapEmailSubmissionCancelOutput, JmapClientStdError>
Runs JmapEmailSubmissionCancel (EmailSubmission/set with
undoStatus: "canceled").
Sourcepub fn vacation_response_get(
&mut self,
) -> Result<Option<JmapVacationResponse>, JmapClientStdError>
pub fn vacation_response_get( &mut self, ) -> Result<Option<JmapVacationResponse>, JmapClientStdError>
Runs JmapVacationResponseGet; returns the singleton, if any.
Sourcepub fn vacation_response_set(
&mut self,
patch: JmapVacationResponseUpdate,
) -> Result<Option<JmapVacationResponse>, JmapClientStdError>
pub fn vacation_response_set( &mut self, patch: JmapVacationResponseUpdate, ) -> Result<Option<JmapVacationResponse>, JmapClientStdError>
Runs JmapVacationResponseSet; returns the updated singleton if the
server echoed it back.