use crate::constants::{
FETCHER_MODE_BROWSER_HEAD, FETCHER_MODE_BROWSER_HEADLESS, FETCHER_MODE_HEAD,
FETCHER_MODE_HEADLESS, FETCHER_MODE_PLAIN, FETCHER_MODE_PLAIN_REQUEST,
};
use crate::error::TarziError;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum FetchMode {
PlainRequest,
BrowserHead,
BrowserHeadless,
}
impl std::str::FromStr for FetchMode {
type Err = TarziError;
fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
match s.to_lowercase().as_str() {
FETCHER_MODE_PLAIN_REQUEST | FETCHER_MODE_PLAIN => Ok(FetchMode::PlainRequest),
FETCHER_MODE_HEAD | FETCHER_MODE_BROWSER_HEAD => Ok(FetchMode::BrowserHead),
FETCHER_MODE_HEADLESS | FETCHER_MODE_BROWSER_HEADLESS => Ok(FetchMode::BrowserHeadless),
_ => Err(TarziError::InvalidMode(s.to_string())),
}
}
}
pub type WebFetcher = crate::fetcher::webfetcher::WebFetcher;