clickup/
error.rs

1//! Tipos de erro para o crate clickup
2
3use thiserror::Error;
4
5/// Erros do cliente ClickUp
6#[derive(Debug, Error)]
7pub enum ClickUpError {
8    /// Erro de requisição HTTP
9    #[error("HTTP request failed: {0}")]
10    HttpError(#[from] reqwest::Error),
11
12    /// Erro da API do ClickUp (status code não-200)
13    #[error("ClickUp API error (status {status}): {message}")]
14    ApiError { status: u16, message: String },
15
16    /// Erro de autenticação
17    #[error("Authentication failed: {0}")]
18    AuthError(String),
19
20    /// Erro de parsing JSON
21    #[error("JSON parsing failed: {0}")]
22    JsonError(#[from] serde_json::Error),
23
24    /// Recurso não encontrado (folder, list, task, etc)
25    #[error("Resource not found: {0}")]
26    NotFound(String),
27
28    /// Erro de configuração
29    #[error("Configuration error: {0}")]
30    ConfigError(String),
31
32    /// Timeout de operação
33    #[error("Operation timeout: {0}")]
34    Timeout(String),
35
36    /// Erro de validação
37    #[error("Validation error: {0}")]
38    ValidationError(String),
39}
40
41/// Tipo Result padrão para o crate
42pub type Result<T> = std::result::Result<T, ClickUpError>;