hyw_embed/
error.rs

1//! Error types for the hyw-embed crate.
2
3use super::CyperError;
4use http::StatusCode;
5use thiserror::Error;
6
7/// Possible errors when embedding text.
8#[derive(Debug, Error)]
9pub enum EmbedError {
10    // HTTP client errors.
11    /// Error when preparing the request.
12    #[error("Failed to prepare request: {0}")]
13    RequestPreparation(CyperError),
14    /// Error when serializing the request body.
15    #[error("Failed to serialize request body: {0}")]
16    RequestSerialization(CyperError),
17    /// Error when sending the request.
18    #[error("Failed to send request: {0}")]
19    RequestSend(CyperError),
20    /// Error when parsing the response body.
21    #[error("Failed to parse response body: {0}")]
22    ResponseParse(CyperError),
23    /// Error when decoding the base64 embedding.
24    #[error("Failed to decode base64 embedding: {0}")]
25    Base64Decode(#[from] base64::DecodeError),
26
27    // API errors.
28    /// Invalid API key.
29    #[error("Invalid API key: {0}")]
30    InvalidApiKey(String),
31    /// Rate limit exceeded.
32    #[error("Rate limit exceeded: {0}")]
33    RateLimitExceeded(String),
34    /// Unknown API error.
35    #[error("Unknown API error: {code}: {message}")]
36    UnknownApiError {
37        /// HTTP status code.
38        code: StatusCode,
39        /// Response message.
40        message: String,
41    }
42}