1use serde::{Deserialize, Serialize};
4
5use crate::PROTOCOL_VERSION;
6use crate::descriptor::FeedDescriptor;
7
8#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
14pub struct FeedManifest {
15 pub protocol_version: u32,
18 pub server_version: String,
20 pub feeds: Vec<FeedDescriptor>,
22}
23
24impl FeedManifest {
25 pub fn new(server_version: impl Into<String>, feeds: Vec<FeedDescriptor>) -> Self {
26 Self { protocol_version: PROTOCOL_VERSION, server_version: server_version.into(), feeds }
27 }
28
29 pub fn empty(server_version: impl Into<String>) -> Self {
30 Self::new(server_version, Vec::new())
31 }
32
33 pub fn find(&self, name: &str) -> Option<&FeedDescriptor> {
34 self.feeds.iter().find(|f| f.name == name)
35 }
36}