aboutsummaryrefslogtreecommitdiff
path: root/lib/jsonfeed/src/lib.rs
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2021-01-14 22:36:34 -0500
committerGitHub <noreply@github.com>2021-01-14 22:36:34 -0500
commitd2455aa1c1bfc599a07966a7d717c1380d41bbc0 (patch)
treec2b206aa41cd6f0e13d61b5455861f09ab5d1304 /lib/jsonfeed/src/lib.rs
parenta359f54a91f4aeb914c69f59a02afabccd72450e (diff)
downloadxesite-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.rs66
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);
}
}
-