extrablatt 0.1.1

News, articles and text scraper
Documentation
use bytes::Bytes;
use thiserror::Error;

use crate::article::PureArticle;

/// All different error types this crate uses.
#[derive(Error, Debug)]
pub enum ExtrablattError {
    /// Received a good non success Http response
    #[error("Expected a 2xx Success but got: {}", response.status())]
    NoHttpSuccessResponse {
        /// The good reqwest response.
        response: reqwest::Response,
    },
    /// Failed to get a response.
    #[error("Request failed: {error}")]
    HttpRequestFailure {
        /// The reqwest error.
        error: reqwest::Error,
    },
    /// Failed to read a document.
    #[error("Failed to read document")]
    ReadDocumentError {
        /// The content the resulted in the error.
        body: Bytes,
    },
    /// Identified an article, but it's content doesn't fulfill the configured
    /// requirements.
    #[error("Found incomplete Article for {}", article.url)]
    IncompleteArticle {
        /// The found article and its content.
        article: Box<PureArticle>,
    },
}