diff options
| author | Christine Dodrill <me@christine.website> | 2021-01-14 22:36:34 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-14 22:36:34 -0500 |
| commit | d2455aa1c1bfc599a07966a7d717c1380d41bbc0 (patch) | |
| tree | c2b206aa41cd6f0e13d61b5455861f09ab5d1304 /lib/jsonfeed/src/lib.rs | |
| parent | a359f54a91f4aeb914c69f59a02afabccd72450e (diff) | |
| download | xesite-d2455aa1c1bfc599a07966a7d717c1380d41bbc0.tar.xz xesite-d2455aa1c1bfc599a07966a7d717c1380d41bbc0.zip | |
Cache better (#296)
* Many improvements around bandwidth use
- Use ETags for RSS/Atom feeds
- Use cache-control headers
- Update to rust nightly (for rust-analyzer and faster builds)
- Limit feeds to the last 20 posts:
https://twitter.com/theprincessxena/status/1349891678857998339
- Use if-none-match to limit bandwidth further
Also does this:
- bump go_vanity to 0.3.0 and lets users customize the branch name
- fix formatting on jsonfeed
- remove last vestige of kubernetes/docker support
Signed-off-by: Christine Dodrill <me@christine.website>
* expire cache quicker for dynamic pages
Signed-off-by: Christine Dodrill <me@christine.website>
* add rss ttl
Signed-off-by: Christine Dodrill <me@christine.website>
* add blogpost
Signed-off-by: Christine Dodrill <me@christine.website>
Diffstat (limited to 'lib/jsonfeed/src/lib.rs')
| -rw-r--r-- | lib/jsonfeed/src/lib.rs | 66 |
1 files changed, 21 insertions, 45 deletions
diff --git a/lib/jsonfeed/src/lib.rs b/lib/jsonfeed/src/lib.rs index bc1d94e..812083e 100644 --- a/lib/jsonfeed/src/lib.rs +++ b/lib/jsonfeed/src/lib.rs @@ -2,7 +2,7 @@ //! instead of XML //! //! This crate can serialize and deserialize between JSON Feed strings -//! and Rust data structures. It also allows for programmatically building +//! and Rust data structures. It also allows for programmatically building //! a JSON Feed //! //! Example: @@ -40,18 +40,20 @@ //! ``` extern crate serde; -#[macro_use] extern crate error_chain; -#[macro_use] extern crate serde_derive; +#[macro_use] +extern crate error_chain; +#[macro_use] +extern crate serde_derive; extern crate serde_json; +mod builder; mod errors; -mod item; mod feed; -mod builder; +mod item; pub use errors::*; +pub use feed::{Attachment, Author, Feed}; pub use item::*; -pub use feed::{Feed, Author, Attachment}; use std::io::Write; @@ -116,14 +118,16 @@ pub fn to_vec_pretty(value: &Feed) -> Result<Vec<u8>> { /// Serialize a Feed to JSON and output to an IO stream pub fn to_writer<W>(writer: W, value: &Feed) -> Result<()> - where W: Write +where + W: Write, { Ok(serde_json::to_writer(writer, value)?) } /// Serialize a Feed to pretty-printed JSON and output to an IO stream pub fn to_writer_pretty<W>(writer: W, value: &Feed) -> Result<()> - where W: Write +where + W: Write, { Ok(serde_json::to_writer_pretty(writer, value)?) } @@ -137,10 +141,7 @@ mod tests { fn from_str() { let feed = r#"{"version": "https://jsonfeed.org/version/1","title":"","items":[]}"#; let expected = Feed::default(); - assert_eq!( - super::from_str(&feed).unwrap(), - expected - ); + assert_eq!(super::from_str(&feed).unwrap(), expected); } #[test] fn from_reader() { @@ -148,39 +149,27 @@ mod tests { let feed = feed.as_bytes(); let feed = Cursor::new(feed); let expected = Feed::default(); - assert_eq!( - super::from_reader(feed).unwrap(), - expected - ); + assert_eq!(super::from_reader(feed).unwrap(), expected); } #[test] fn from_slice() { let feed = r#"{"version": "https://jsonfeed.org/version/1","title":"","items":[]}"#; let feed = feed.as_bytes(); let expected = Feed::default(); - assert_eq!( - super::from_slice(&feed).unwrap(), - expected - ); + assert_eq!(super::from_slice(&feed).unwrap(), expected); } #[test] fn from_value() { let feed = r#"{"version": "https://jsonfeed.org/version/1","title":"","items":[]}"#; let feed: serde_json::Value = serde_json::from_str(&feed).unwrap(); let expected = Feed::default(); - assert_eq!( - super::from_value(feed).unwrap(), - expected - ); + assert_eq!(super::from_value(feed).unwrap(), expected); } #[test] fn to_string() { let feed = Feed::default(); let expected = r#"{"version":"https://jsonfeed.org/version/1","title":"","items":[]}"#; - assert_eq!( - super::to_string(&feed).unwrap(), - expected - ); + assert_eq!(super::to_string(&feed).unwrap(), expected); } #[test] fn to_string_pretty() { @@ -190,28 +179,19 @@ mod tests { "title": "", "items": [] }"#; - assert_eq!( - super::to_string_pretty(&feed).unwrap(), - expected - ); + assert_eq!(super::to_string_pretty(&feed).unwrap(), expected); } #[test] fn to_value() { let feed = r#"{"version":"https://jsonfeed.org/version/1","title":"","items":[]}"#; let expected: serde_json::Value = serde_json::from_str(&feed).unwrap(); - assert_eq!( - super::to_value(Feed::default()).unwrap(), - expected - ); + assert_eq!(super::to_value(Feed::default()).unwrap(), expected); } #[test] fn to_vec() { let feed = r#"{"version":"https://jsonfeed.org/version/1","title":"","items":[]}"#; let expected = feed.as_bytes(); - assert_eq!( - super::to_vec(&Feed::default()).unwrap(), - expected - ); + assert_eq!(super::to_vec(&Feed::default()).unwrap(), expected); } #[test] fn to_vec_pretty() { @@ -221,10 +201,7 @@ mod tests { "items": [] }"#; let expected = feed.as_bytes(); - assert_eq!( - super::to_vec_pretty(&Feed::default()).unwrap(), - expected - ); + assert_eq!(super::to_vec_pretty(&Feed::default()).unwrap(), expected); } #[test] fn to_writer() { @@ -249,4 +226,3 @@ mod tests { assert_eq!(result, feed); } } - |
