diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index dfc47b5..763944c 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -21,6 +21,12 @@ jobs: - name: Build run: cargo build --release + + - uses: actions/upload-artifact@v2.2.1 + name: Upload a Build Artifact + with: + name: libreddit + path: target/release/libreddit - name: Versions id: version @@ -35,7 +41,6 @@ jobs: name: ${{ steps.version.outputs.version }} - NAME draft: true files: target/release/libreddit - fail_on_unmatched_files: true body: | - CHANGES diff --git a/Cargo.toml b/Cargo.toml index 938dae3..bc7f687 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.8.0" +version = "0.8.1" authors = ["spikecodes <19519553+spikecodes@users.noreply.github.com>"] edition = "2018" @@ -16,7 +16,7 @@ regex = "1.4.5" serde = { version = "1.0.125", features = ["derive"] } cookie = "0.15.0" futures-lite = "1.11.3" -hyper = { version = "0.14.4", features = ["full"] } +hyper = { version = "0.14.5", features = ["full"] } hyper-rustls = "0.22.1" route-recognizer = "0.3.0" serde_json = "1.0.64" diff --git a/README.md b/README.md index f435a42..5c618cd 100644 --- a/README.md +++ b/README.md @@ -21,20 +21,6 @@ --- -## Jump to... -- [About](#about) - - [Teddit Comparison](#how-does-it-compare-to-teddit) -- [Comparison](#comparison) -- [Installation](#installation) - - [Cargo](#1-cargo) - - [Docker](#2-docker) - - [AUR](#3-aur) - - [GitHub Releases](#4-github-releases) - - [Replit](#5-replit) -- [Deployment](#deployment) - ---- - # Instances Feel free to [open an issue](https://github.com/spikecodes/libreddit/issues/new) to have your [selfhosted instance](#deployment) listed here! diff --git a/src/client.rs b/src/client.rs index eaf9092..a3dcc98 100644 --- a/src/client.rs +++ b/src/client.rs @@ -134,6 +134,6 @@ pub async fn json(path: String) -> Result { Err(e) => err("Failed receiving body from Reddit", e.to_string()), } } - Err(e) => err("Couldn't send request to Reddit", e.to_string()), + Err(e) => err("Couldn't send request to Reddit", e), } } diff --git a/src/main.rs b/src/main.rs index ff0e955..0850008 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,7 +6,8 @@ clippy::match_wildcard_for_single_variants, clippy::cast_possible_truncation, clippy::similar_names, - clippy::cast_possible_wrap + clippy::cast_possible_wrap, + clippy::find_map )] // Reference local files diff --git a/src/server.rs b/src/server.rs index 753bfb5..37be2d4 100644 --- a/src/server.rs +++ b/src/server.rs @@ -61,7 +61,7 @@ impl RequestExt for Request { } fn param(&self, name: &str) -> Option { - self.params().find(name).map(|s| s.to_owned()) + self.params().find(name).map(std::borrow::ToOwned::to_owned) } fn set_params(&mut self, params: Params) -> Option { @@ -72,14 +72,14 @@ impl RequestExt for Request { let mut cookies = Vec::new(); if let Some(header) = self.headers().get("Cookie") { for cookie in header.to_str().unwrap_or_default().split("; ") { - cookies.push(Cookie::parse(cookie).unwrap_or(Cookie::named(""))); + cookies.push(Cookie::parse(cookie).unwrap_or_else(|_| Cookie::named(""))); } } cookies } fn cookie(&self, name: &str) -> Option { - self.cookies().iter().find(|c| c.name() == name).map(|c| c.to_owned()) + self.cookies().iter().find(|c| c.name() == name).map(std::borrow::ToOwned::to_owned) } } diff --git a/src/subreddit.rs b/src/subreddit.rs index 3f15fa3..c8763e5 100644 --- a/src/subreddit.rs +++ b/src/subreddit.rs @@ -32,18 +32,21 @@ pub async fn community(req: Request) -> Result, String> { // Build Reddit API path let subscribed = cookie(&req, "subscriptions"); let front_page = cookie(&req, "front_page"); - let post_sort = req.cookie("post_sort").map(|c| c.value().to_string()).unwrap_or("hot".to_string()); - let sort = req.param("sort").unwrap_or(req.param("id").unwrap_or(post_sort)); + let post_sort = req.cookie("post_sort").map_or_else(|| "hot".to_string(), |c| c.value().to_string()); + let sort = req.param("sort").unwrap_or_else(|| req.param("id").unwrap_or(post_sort)); - let sub = req.param("sub").map(String::from).unwrap_or(if front_page == "default" || front_page.is_empty() { - if subscribed.is_empty() { - "popular".to_string() + let sub = req.param("sub").map_or( + if front_page == "default" || front_page.is_empty() { + if subscribed.is_empty() { + "popular".to_string() + } else { + subscribed.to_owned() + } } else { - subscribed.to_owned() - } - } else { - front_page.to_owned() - }); + front_page.to_owned() + }, + String::from, + ); let path = format!("/r/{}/{}.json?{}&raw_json=1", sub, sort, req.uri().query().unwrap_or_default()); @@ -89,7 +92,7 @@ pub async fn community(req: Request) -> Result, String> { // Sub or unsub by setting subscription cookie using response "Set-Cookie" header pub async fn subscriptions(req: Request) -> Result, String> { - let sub = req.param("sub").unwrap_or_default().to_string(); + let sub = req.param("sub").unwrap_or_default(); let query = req.uri().query().unwrap_or_default().to_string(); let action: Vec = req.uri().path().split('/').map(String::from).collect(); @@ -137,8 +140,8 @@ pub async fn subscriptions(req: Request) -> Result, String> } pub async fn wiki(req: Request) -> Result, String> { - let sub = req.param("sub").unwrap_or("reddit.com".to_string()); - let page = req.param("page").unwrap_or("index".to_string()); + let sub = req.param("sub").unwrap_or_else(|| "reddit.com".to_string()); + let page = req.param("page").unwrap_or_else(|| "index".to_string()); let path: String = format!("/r/{}/wiki/{}.json?raw_json=1", sub, page); match json(path).await { @@ -153,7 +156,7 @@ 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()); + let sub = req.param("sub").unwrap_or_else(|| "reddit.com".to_string()); // Build the Reddit JSON API url let path: String = format!("/r/{}/about.json?raw_json=1", sub); diff --git a/src/user.rs b/src/user.rs index fdbc128..8f7910c 100644 --- a/src/user.rs +++ b/src/user.rs @@ -23,7 +23,7 @@ pub async fn profile(req: Request) -> Result, String> { // Build the Reddit JSON API path let path = format!( "/user/{}.json?{}&raw_json=1", - req.param("name").unwrap_or("reddit".to_string()), + req.param("name").unwrap_or_else(|| "reddit".to_string()), req.uri().query().unwrap_or_default() );