diff options
| author | Xe Iaso <me@christine.website> | 2023-09-30 10:36:37 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-30 10:36:37 -0400 |
| commit | ac6a3df0d18cc73524c0096d954a57d24cad5669 (patch) | |
| tree | 81474177d730440657f490ae29892d62392251ea /lib/jsonfeed/src/lib.rs | |
| parent | cbdea8ba3fca9a663778af71f8df5965aeb6c090 (diff) | |
| download | xesite-ac6a3df0d18cc73524c0096d954a57d24cad5669.tar.xz xesite-ac6a3df0d18cc73524c0096d954a57d24cad5669.zip | |
Xesite V4 (#723)
* scripts/ditherify: fix quoting
Signed-off-by: Xe Iaso <me@xeiaso.net>
* clean up some old files
Signed-off-by: Xe Iaso <me@xeiaso.net>
* import site into lume
Signed-off-by: Xe Iaso <me@xeiaso.net>
* initial go code
Signed-off-by: Xe Iaso <me@xeiaso.net>
* move vods index to top level
Signed-off-by: Xe Iaso <me@xeiaso.net>
* remove the ads
Signed-off-by: Xe Iaso <me@xeiaso.net>
* internal/lume: metrics
Signed-off-by: Xe Iaso <me@xeiaso.net>
* delete old code
Signed-off-by: Xe Iaso <me@xeiaso.net>
* load config into memory
Signed-off-by: Xe Iaso <me@xeiaso.net>
* autogenerate data from dhall config
Signed-off-by: Xe Iaso <me@xeiaso.net>
* various cleanups, import clackset logic
Signed-off-by: Xe Iaso <me@xeiaso.net>
* Update signalboost.dhall (#722)
Added myself, and also fixed someone’s typo
* Add Connor Edwards to signal boost (#721)
* add cache headers
Signed-off-by: Xe Iaso <me@xeiaso.net>
* move command to xesite folder
Signed-off-by: Xe Iaso <me@xeiaso.net>
* xesite: listen for GitHub webhook push events
Signed-off-by: Xe Iaso <me@xeiaso.net>
* xesite: 5 minute timeout for rebuilding the site
Signed-off-by: Xe Iaso <me@xeiaso.net>
* xesite: add rebuild metrics
Signed-off-by: Xe Iaso <me@xeiaso.net>
* xesite: update default variables
Signed-off-by: Xe Iaso <me@xeiaso.net>
* don't commit binaries oops lol
Signed-off-by: Xe Iaso <me@xeiaso.net>
* lume: make search have a light background
Signed-off-by: Xe Iaso <me@xeiaso.net>
* add a notfound page
Signed-off-by: Xe Iaso <me@xeiaso.net>
* fetch info from patreon API
Signed-off-by: Xe Iaso <me@xeiaso.net>
* create contact page
Signed-off-by: Xe Iaso <me@xeiaso.net>
* Toot embedding
Signed-off-by: Xe Iaso <me@xeiaso.net>
* attempt a docker image
Signed-off-by: Xe Iaso <me@xeiaso.net>
* lume: fix deno lock
Signed-off-by: Xe Iaso <me@xeiaso.net>
* add gokrazy post
Signed-off-by: Xe Iaso <me@xeiaso.net>
* cmd/xesite: go up before trying to connect to the saas proxy
Signed-off-by: Xe Iaso <me@xeiaso.net>
* blog: add Sine post/demo
Signed-off-by: Xe Iaso <me@xeiaso.net>
---------
Signed-off-by: Xe Iaso <me@xeiaso.net>
Co-authored-by: bri <284789+b-@users.noreply.github.com>
Co-authored-by: Connor Edwards <38229097+cedws@users.noreply.github.com>
Diffstat (limited to 'lib/jsonfeed/src/lib.rs')
| -rw-r--r-- | lib/jsonfeed/src/lib.rs | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/lib/jsonfeed/src/lib.rs b/lib/jsonfeed/src/lib.rs deleted file mode 100644 index d501161..0000000 --- a/lib/jsonfeed/src/lib.rs +++ /dev/null @@ -1,230 +0,0 @@ -//! JSON Feed is a syndication format similar to ATOM and RSS, using JSON -//! instead of XML -//! -//! This crate can serialize and deserialize between JSON Feed strings -//! and Rust data structures. It also allows for programmatically building -//! a JSON Feed -//! -//! Example: -//! -//! ```rust -//! extern crate jsonfeed; -//! -//! use jsonfeed::{Feed, Item}; -//! -//! fn run() -> Result<(), jsonfeed::Error> { -//! let j = r#"{ -//! "title": "my feed", -//! "version": "https://jsonfeed.org/version/1", -//! "items": [] -//! }"#; -//! let feed = jsonfeed::from_str(j).unwrap(); -//! -//! let new_feed = Feed::builder() -//! .title("some other feed") -//! .item(Item::builder() -//! .title("some item title") -//! .content_html("<p>Hello, World</p>") -//! .build()?) -//! .item(Item::builder() -//! .title("some other item title") -//! .content_text("Hello, World!") -//! .build()?) -//! .build(); -//! println!("{}", jsonfeed::to_string(&new_feed).unwrap()); -//! Ok(()) -//! } -//! fn main() { -//! let _ = run(); -//! } -//! ``` - -#![allow(clippy::new_without_default)] - -extern crate serde; -#[macro_use] -extern crate error_chain; -#[macro_use] -extern crate serde_derive; -extern crate serde_json; - -mod builder; -mod errors; -mod feed; -mod item; - -pub use errors::*; -pub use feed::{Attachment, Author, Feed}; -pub use item::*; - -use std::io::Write; - -/// Attempts to convert a string slice to a Feed object -/// -/// Example -/// -/// ```rust -/// # extern crate jsonfeed; -/// # use jsonfeed::Feed; -/// # use std::default::Default; -/// # fn main() { -/// let json = r#"{"version": "https://jsonfeed.org/version/1", "title": "", "items": []}"#; -/// let feed: Feed = jsonfeed::from_str(&json).unwrap(); -/// -/// assert_eq!(feed, Feed::default()); -/// # } -/// ``` -pub fn from_str(s: &str) -> Result<Feed> { - Ok(serde_json::from_str(s)?) -} - -/// Deserialize a Feed object from an IO stream of JSON -pub fn from_reader<R: ::std::io::Read>(r: R) -> Result<Feed> { - Ok(serde_json::from_reader(r)?) -} - -/// Deserialize a Feed object from bytes of JSON text -pub fn from_slice(v: &[u8]) -> Result<Feed> { - Ok(serde_json::from_slice(v)?) -} - -/// Convert a serde_json::Value type to a Feed object -pub fn from_value(value: serde_json::Value) -> Result<Feed> { - Ok(serde_json::from_value(value)?) -} - -/// Serialize a Feed to a JSON Feed string -pub fn to_string(value: &Feed) -> Result<String> { - Ok(serde_json::to_string(value)?) -} - -/// Pretty-print a Feed to a JSON Feed string -pub fn to_string_pretty(value: &Feed) -> Result<String> { - Ok(serde_json::to_string_pretty(value)?) -} - -/// Convert a Feed to a serde_json::Value -pub fn to_value(value: Feed) -> Result<serde_json::Value> { - Ok(serde_json::to_value(value)?) -} - -/// Convert a Feed to a vector of bytes of JSON -pub fn to_vec(value: &Feed) -> Result<Vec<u8>> { - Ok(serde_json::to_vec(value)?) -} - -/// Convert a Feed to a vector of bytes of pretty-printed JSON -pub fn to_vec_pretty(value: &Feed) -> Result<Vec<u8>> { - Ok(serde_json::to_vec_pretty(value)?) -} - -/// Serialize a Feed to JSON and output to an IO stream -pub fn to_writer<W>(writer: W, value: &Feed) -> Result<()> -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, -{ - Ok(serde_json::to_writer_pretty(writer, value)?) -} - -#[cfg(test)] -mod tests { - use super::*; - use std::io::Cursor; - - #[test] - 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); - } - #[test] - fn from_reader() { - let feed = r#"{"version": "https://jsonfeed.org/version/1","title":"","items":[]}"#; - let feed = feed.as_bytes(); - let feed = Cursor::new(feed); - let expected = Feed::default(); - 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); - } - #[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); - } - #[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); - } - #[test] - fn to_string_pretty() { - let feed = Feed::default(); - let expected = r#"{ - "version": "https://jsonfeed.org/version/1", - "title": "", - "items": [] -}"#; - 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); - } - #[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); - } - #[test] - fn to_vec_pretty() { - let feed = r#"{ - "version": "https://jsonfeed.org/version/1", - "title": "", - "items": [] -}"#; - let expected = feed.as_bytes(); - assert_eq!(super::to_vec_pretty(&Feed::default()).unwrap(), expected); - } - #[test] - fn to_writer() { - let feed = r#"{"version":"https://jsonfeed.org/version/1","title":"","items":[]}"#; - let feed = feed.as_bytes(); - let mut writer = Cursor::new(Vec::with_capacity(feed.len())); - super::to_writer(&mut writer, &Feed::default()).expect("Could not write to writer"); - let result = writer.into_inner(); - assert_eq!(result, feed); - } - #[test] - fn to_writer_pretty() { - let feed = r#"{ - "version": "https://jsonfeed.org/version/1", - "title": "", - "items": [] -}"#; - let feed = feed.as_bytes(); - let mut writer = Cursor::new(Vec::with_capacity(feed.len())); - super::to_writer_pretty(&mut writer, &Feed::default()).expect("Could not write to writer"); - let result = writer.into_inner(); - assert_eq!(result, feed); - } -} |
