2024-05-07 22:10:21 +02:00
|
|
|
use serde_derive::{Deserialize, Serialize};
|
|
|
|
use strum_macros::Display;
|
|
|
|
use crate::fetchers::Fetcher::Jnc;
|
|
|
|
use crate::fetchers::jnovel::JNovelFetcher;
|
|
|
|
use crate::lemmy::{PostInfo};
|
2024-01-08 21:06:18 +01:00
|
|
|
|
|
|
|
pub mod jnovel;
|
|
|
|
|
2024-05-07 22:10:21 +02:00
|
|
|
pub(crate) trait FetcherTrait {
|
|
|
|
fn new() -> Self where Self: Sized;
|
2024-07-21 02:27:16 +02:00
|
|
|
fn check_feed(&self) -> Result<Vec<PostInfo>, ()>;
|
2024-05-07 22:10:21 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
impl Fetcher {
|
2024-07-21 02:27:16 +02:00
|
|
|
pub(crate) fn check_feed(&self) -> Result<Vec<PostInfo>, ()> {
|
2024-05-07 22:10:21 +02:00
|
|
|
match self {
|
2024-07-21 02:27:16 +02:00
|
|
|
Jnc(fetcher) => fetcher.check_feed(),
|
2024-05-07 22:10:21 +02:00
|
|
|
/*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")]
|
2024-05-07 22:50:12 +02:00
|
|
|
Jnc(#[serde(skip)] JNovelFetcher)
|
2024-01-08 21:06:18 +01:00
|
|
|
}
|