spider_lib/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum SpiderError {
5    #[error("Request error: {0}")]
6    ReqwestError(#[from] reqwest::Error),
7    #[error("URL parse error: {0}")]
8    UrlParseError(#[from] url::ParseError),
9    #[error("I/O error: {0}")]
10    IoError(#[from] std::io::Error),
11    #[error("HTTP error: {0}")]
12    HttpError(#[from] http::Error),
13    #[error("JSON serialization/deserialization error: {0}")]
14    SerdeJsonError(#[from] serde_json::Error),
15    #[error("HTML parsing error: {0}")]
16    HtmlParseError(String),
17    #[error("Tokio join error: {0}")]
18    TokioJoinError(#[from] tokio::task::JoinError),
19    #[error("Internal error: {0}")]
20    InternalError(String),
21    #[error("Channel send error: {0}")]
22    MpscSendError(String),
23    #[error("Message: {0}")]
24    Msg(String),
25    #[error("Header value error: {0}")]
26    HeaderValueError(String),
27    #[error("Other error: {0}")]
28    Other(String),
29}
30
31#[derive(Error, Debug)]
32pub enum PipelineError {
33    #[error("I/O error: {0}")]
34    IoError(#[from] std::io::Error),
35    #[error("Item processing error: {0}")]
36    ItemError(String),
37    #[cfg(feature = "pipeline-sqlite")]
38    #[error("Database error: {0}")]
39    DatabaseError(#[from] rusqlite::Error),
40    #[error("Serialization error: {0}")]
41    SerializationError(#[from] serde_json::Error),
42    #[cfg(feature = "pipeline-csv")]
43    #[error("CSV error: {0}")]
44    CsvError(#[from] csv::Error),
45    #[error("Other pipeline error: {0}")]
46    Other(String),
47}
48