use serde_derive::{Deserialize, Serialize}; use strum_macros::Display; use crate::fetchers::Fetcher::Jnc; use crate::fetchers::jnovel::JNovelFetcher; use crate::lemmy::{PostInfo}; pub mod jnovel; pub(crate) trait FetcherTrait { fn new() -> Self where Self: Sized; fn check_feed(&self) -> Result<Vec<PostInfo>, ()>; } impl Fetcher { pub(crate) fn check_feed(&self) -> Result<Vec<PostInfo>, ()> { match self { Jnc(fetcher) => fetcher.check_feed(), /*default => { let err_msg = format!("Fetcher {default} is not implemented"); error!(err_msg); Err(()) }*/ } } } #[derive(Deserialize, Serialize, Debug, Clone, Display)] pub(crate) enum Fetcher { #[serde(rename = "jnc")] Jnc(#[serde(skip)] JNovelFetcher) }