use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
#[serde(untagged)]
pub enum RssFeedCollection {
Feed(RssFeed),
Folder(HashMap<String, RssFeedCollection>),
FeedBase(RssFeedBase),
}
#[derive(Debug, Deserialize, Serialize, Clone, Default, PartialEq)]
pub struct RssFeedBase {
uid: String,
url: String,
}
#[derive(Debug, Deserialize, Serialize, Clone, Default, PartialEq)]
pub struct RssFeed {
uid: String,
title: String,
url: String,
#[serde(rename = "lastBuildDate")]
last_build_date: String,
#[serde(rename = "hasError")]
has_error: bool,
#[serde(rename = "isLoading")]
is_loading: bool,
articles: Vec<RssArticle>,
}
#[derive(Debug, Deserialize, Serialize, Clone, Default, PartialEq)]
pub struct RssArticle {
id: String,
title: String,
#[serde(rename = "torrentURL")]
torrent_url: String,
link: String,
description: String,
date: String,
}
#[derive(Debug, Deserialize, Serialize, Clone, Default, PartialEq)]
pub struct RssRule {
enabled: bool,
#[serde(rename = "mustContain")]
must_contain: String,
#[serde(rename = "mustNotContain")]
must_not_contain: String,
#[serde(rename = "useRegex")]
use_regex: bool,
#[serde(rename = "episodeFilter")]
episode_filter: String,
#[serde(rename = "smartFilter")]
smart_filter: bool,
#[serde(rename = "previouslyMatchedEpisodes")]
previously_matched_episodes: Vec<String>,
#[serde(rename = "affectedFeeds")]
affected_feeds: Vec<String>,
#[serde(rename = "ignoreDays")]
ignore_days: i64,
#[serde(rename = "lastMatch")]
last_match: String,
#[serde(rename = "addPaused")]
add_paused: bool,
#[serde(rename = "assignedCategory")]
assigned_category: String,
#[serde(rename = "savePath")]
save_path: String,
}