diff --git a/Cargo.toml b/Cargo.toml index b0929c9..34d916a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ name = "libreddit" description = " Alternative private front-end to Reddit" license = "AGPL-3.0" repository = "https://github.com/spikecodes/libreddit" -version = "0.6.2" +version = "0.7.0" authors = ["spikecodes <19519553+spikecodes@users.noreply.github.com>"] edition = "2018" diff --git a/src/main.rs b/src/main.rs index 68a28c8..ff0e955 100644 --- a/src/main.rs +++ b/src/main.rs @@ -209,6 +209,8 @@ async fn main() { app.at("/r/:sub/wiki").get(|r| subreddit::wiki(r).boxed()); app.at("/r/:sub/wiki/:page").get(|r| subreddit::wiki(r).boxed()); + app.at("/r/:sub/about/sidebar").get(|r| subreddit::sidebar(r).boxed()); + app.at("/r/:sub/:sort").get(|r| subreddit::community(r).boxed()); // Comments handler diff --git a/src/subreddit.rs b/src/subreddit.rs index 79d3716..3d72105 100644 --- a/src/subreddit.rs +++ b/src/subreddit.rs @@ -151,6 +151,25 @@ pub async fn wiki(req: Request) -> Result, String> { } } +pub async fn sidebar(req: Request) -> Result, String> { + let sub = req.param("sub").unwrap_or("reddit.com".to_string()); + + // Build the Reddit JSON API url + let path: String = format!("/r/{}/about.json?raw_json=1", sub); + + // Send a request to the url + match json(path).await { + // If success, receive JSON in response + Ok(response) => template(WikiTemplate { + sub, + wiki: rewrite_urls(&val(&response, "description_html").replace("\\", "")), + page: "Sidebar".to_string(), + prefs: Preferences::new(req), + }), + Err(msg) => error(req, msg).await, + } +} + // SUBREDDIT async fn subreddit(sub: &str) -> Result { // Build the Reddit JSON API url