#[non_exhaustive]pub enum ClientError {
Show 14 variants
Http(Error),
InvalidHeaderValue(InvalidHeaderValue),
AuthFailed(u16),
Parse(Error),
BlobIntegrityMismatch {
expected: String,
actual: String,
},
InvalidArgument(String),
InvalidSession(String),
MethodNotFound(String),
MethodError {
error_type: String,
description: Option<String>,
},
Serialize(Error),
SseFrameTooLarge {
limit: usize,
},
ResponseTooLarge {
actual: u64,
limit: u64,
},
WebSocket(Error),
UnexpectedResponse(String),
}Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Http(Error)
Network or TLS error from the HTTP layer. May be retriable (transient network failure) or permanent (TLS configuration error). Indicates a network or transport problem, not a JMAP protocol error.
Semver note: this variant embeds reqwest::Error directly. Callers
that match this variant are semver-locked to the same reqwest major
version as this crate. This is a known pre-1.0 limitation.
InvalidHeaderValue(InvalidHeaderValue)
A header value could not be encoded. Indicates a caller bug — the credential string contains characters that are not valid HTTP header value characters. Not retriable.
AuthFailed(u16)
The server returned HTTP 401 (authentication failure) or 403 (authorization failure — credentials present but insufficient). Not retriable without correcting credentials.
Parse(Error)
A server response could not be parsed or did not match the expected shape. Indicates the server sent a malformed response. Not retriable without a server fix.
Construct explicitly: .map_err(ClientError::Parse).
BlobIntegrityMismatch
Downloaded blob SHA-256 does not match the expected digest. Indicates in-transit corruption or a misbehaving server. Not retriable without re-fetching metadata.
InvalidArgument(String)
A caller-supplied argument violates a precondition (e.g. empty token, colon in BasicAuth username, missing required filter field).
InvalidSession(String)
The JMAP Session object from the server was missing a required field. Indicates a server-side bug or incompatible server. Not retriable.
MethodNotFound(String)
The JMAP API response did not contain the expected method call ID. Indicates a server-side bug or unexpected response shape.
MethodError
The JMAP server returned a method-level error object (RFC 8620 §3.6).
Retriability depends on error_type (e.g. serverFail may be
retried; invalidArguments is not retriable).
description is None when the server omits the optional description field.
Serialize(Error)
A JMAP request could not be serialized to JSON when sending over WebSocket. Indicates a caller bug — the data structure contains non-serializable values. Not retriable.
This error is only returned by [WsSession::send_request]; the HTTP
call() path delegates serialization to reqwest, which surfaces
serialization failures as ClientError::Http.
Construct explicitly: .map_err(ClientError::Serialize).
SseFrameTooLarge
An SSE frame exceeded the configured buffer limit
([ClientConfig::max_sse_frame]). The stream is terminated after this
error. Indicates a misbehaving or hostile server.
ResponseTooLarge
A server response body exceeded the enforced size limit. Protects
against unbounded memory allocation from malicious or buggy servers.
actual is in bytes (from Content-Length or actual read size).
WebSocket(Error)
A WebSocket transport error (connection, framing, or TLS). May be retriable (transient network failure) or permanent (TLS config error).
Semver note: this variant embeds tungstenite::Error directly.
Callers that match this variant are semver-locked to the same
tokio-tungstenite major version as this crate. Pre-1.0 limitation.
UnexpectedResponse(String)
The server returned a response that violates the JMAP protocol (outside
the Session fetch path). Examples: wrong Content-Type on an SSE
connection, unexpected response shape on a non-session endpoint.
Distinct from ClientError::InvalidSession, which indicates a
problem with the Session document itself. Not retriable without a
server fix.
Trait Implementations§
Source§impl Debug for ClientError
impl Debug for ClientError
Source§impl Display for ClientError
impl Display for ClientError
Source§impl Error for ClientError
impl Error for ClientError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<Error> for ClientError
impl From<Error> for ClientError
Source§impl From<Error> for ClientError
impl From<Error> for ClientError
Source§impl From<InvalidHeaderValue> for ClientError
impl From<InvalidHeaderValue> for ClientError
Source§fn from(source: InvalidHeaderValue) -> Self
fn from(source: InvalidHeaderValue) -> Self
Auto Trait Implementations§
impl Freeze for ClientError
impl !RefUnwindSafe for ClientError
impl Send for ClientError
impl Sync for ClientError
impl Unpin for ClientError
impl UnsafeUnpin for ClientError
impl !UnwindSafe for ClientError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.