use serde::{Deserialize, Serialize};
use crate::PROTOCOL_VERSION;
use crate::descriptor::FeedDescriptor;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FeedManifest {
pub protocol_version: u32,
pub server_version: String,
pub feeds: Vec<FeedDescriptor>,
}
impl FeedManifest {
pub fn new(server_version: impl Into<String>, feeds: Vec<FeedDescriptor>) -> Self {
Self { protocol_version: PROTOCOL_VERSION, server_version: server_version.into(), feeds }
}
pub fn empty(server_version: impl Into<String>) -> Self {
Self::new(server_version, Vec::new())
}
pub fn find(&self, name: &str) -> Option<&FeedDescriptor> {
self.feeds.iter().find(|f| f.name == name)
}
}