commit 9d5b99efba7e36cc16ca4bbaff29ec7ef3a87e9b
parent 441b2fa5b67e739bb654d0f382c33e129f0bdf4f
Author: lash <dev@holbrook.no>
Date: Mon, 1 Jul 2024 01:42:26 +0100
Create metadata object that can apply itself to feed
Diffstat:
3 files changed, 33 insertions(+), 5 deletions(-)
diff --git a/src/lib.rs b/src/lib.rs
@@ -11,10 +11,11 @@ use atom_syndication::Feed as OutFeed;
use std::io::Write;
mod meta;
mod io;
+use meta::FeedMetadata;
pub struct Sequencer {
- metadata: meta::FeedMetadata,
+ metadata: FeedMetadata,
pub items: HashMap<u64, Vec<u8>>,
item_keys: Vec<u64>,
crsr: usize,
@@ -29,6 +30,7 @@ pub struct SequencerEntry {
impl Sequencer {
pub fn new() -> Sequencer {
Sequencer {
+ metadata: FeedMetadata::default(),
items: HashMap::new(),
crsr: 0,
limit: 0,
@@ -66,6 +68,7 @@ impl Sequencer {
feed.set_id("urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6");
feed.set_title("Mixed feed");
feed.set_updated(Local::now().to_utc());
+ self.metadata.apply(&mut feed);
//feed.write_to(&mut v)?;
feed.write_to(w)?;
Ok(())
diff --git a/src/meta.rs b/src/meta.rs
@@ -0,0 +1,28 @@
+use atom_syndication::Person;
+use atom_syndication::Feed;
+
+pub struct FeedMetadata {
+ pub author: Person,
+ complete: bool,
+}
+
+impl Default for FeedMetadata {
+ fn default() -> FeedMetadata {
+ FeedMetadata{
+ author: Person{
+ name: "No One".to_string(),
+ email: Some("none@devnull.com".to_string()),
+ uri: Some("https://devnull.com".to_string()),
+ },
+ complete: false,
+ }
+ }
+}
+
+impl FeedMetadata {
+ pub fn apply(&self, feed: &mut Feed) {
+ let mut persons = Vec::<Person>::new();
+ persons.push(self.author.clone());
+ feed.set_authors(persons);
+ }
+}
diff --git a/src/tests.rs b/src/tests.rs
@@ -79,18 +79,15 @@ fn test_feed_mix() {
#[test]
#[cfg(feature = "fs")]
fn test_feed_write() {
- let r: Metadata;
let fs = Fs{};
let f: NamedTempFile;
let fr: File;
- let fp: String;
let feed = fs.get("testdata/test.atom.xml", None).unwrap();
let mut seq = Sequencer::new();
seq.add_from(feed);
f = NamedTempFile::new().unwrap();
fr = f.reopen().unwrap();
- fp = String::from(f.path().to_str().unwrap());
seq.write_to(f).unwrap();
- assert_eq!(fr.metadata().unwrap().len(), 204);
+ assert_eq!(fr.metadata().unwrap().len(), 301);
}