From a98708ba4754a7c413fa63da72776e470ce7741f Mon Sep 17 00:00:00 2001 From: Greg Heartsfield Date: Sat, 24 Sep 2022 09:01:09 -0500 Subject: [PATCH] refactor: misc clippy suggestions --- src/close.rs | 6 +++--- src/config.rs | 30 ++++++++++++++++++++---------- src/conn.rs | 7 +++++-- src/event.rs | 4 ++-- src/hexrange.rs | 7 +++---- src/nip05.rs | 11 +++++------ src/server.rs | 9 ++++----- 7 files changed, 42 insertions(+), 32 deletions(-) diff --git a/src/close.rs b/src/close.rs index d4cee36..388c192 100644 --- a/src/close.rs +++ b/src/close.rs @@ -23,10 +23,10 @@ pub struct Close { impl From for Result { fn from(cc: CloseCmd) -> Result { // ensure command is correct - if cc.cmd != "CLOSE" { - Err(Error::CommandUnknownError) - } else { + if cc.cmd == "CLOSE" { Ok(Close { id: cc.id }) + } else { + Err(Error::CommandUnknownError) } } } diff --git a/src/config.rs b/src/config.rs index 743fa02..2719ee7 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,6 +1,6 @@ //! Configuration file and settings management use config::{Config, ConfigError, File}; -use log::*; +use log::warn; use serde::{Deserialize, Serialize}; use std::time::Duration; @@ -97,28 +97,36 @@ impl VerifiedUsers { self.verify_update_frequency_duration = self.verify_update_duration(); } + #[must_use] pub fn is_enabled(&self) -> bool { self.mode == VerifiedUsersMode::Enabled } + #[must_use] pub fn is_active(&self) -> bool { self.mode == VerifiedUsersMode::Enabled || self.mode == VerifiedUsersMode::Passive } + #[must_use] pub fn is_passive(&self) -> bool { self.mode == VerifiedUsersMode::Passive } + #[must_use] pub fn verify_expiration_duration(&self) -> Option { self.verify_expiration .as_ref() .and_then(|x| parse_duration::parse(x).ok()) } + + #[must_use] pub fn verify_update_duration(&self) -> Option { self.verify_update_frequency .as_ref() .and_then(|x| parse_duration::parse(x).ok()) } + + #[must_use] pub fn is_valid(&self) -> bool { self.verify_expiration_duration().is_some() && self.verify_update_duration().is_some() } @@ -139,6 +147,7 @@ pub struct Settings { } impl Settings { + #[must_use] pub fn new() -> Self { let default_settings = Self::default(); // attempt to construct settings with file @@ -162,16 +171,17 @@ impl Settings { .build()?; let mut settings: Settings = config.try_deserialize()?; // ensure connection pool size is logical - if settings.database.min_conn > settings.database.max_conn { - panic!( - "Database min_conn setting ({}) cannot exceed max_conn ({})", - settings.database.min_conn, settings.database.max_conn - ); - } + assert!( + settings.database.min_conn <= settings.database.max_conn, + "Database min_conn setting ({}) cannot exceed max_conn ({})", + settings.database.min_conn, + settings.database.max_conn + ); // ensure durations parse - if !settings.verified_users.is_valid() { - panic!("VerifiedUsers time settings could not be parsed"); - } + assert!( + settings.verified_users.is_valid(), + "VerifiedUsers time settings could not be parsed" + ); // initialize durations for verified users settings.verified_users.init(); Ok(settings) diff --git a/src/conn.rs b/src/conn.rs index 40162ac..6973ae4 100644 --- a/src/conn.rs +++ b/src/conn.rs @@ -5,7 +5,7 @@ use crate::error::Result; use crate::event::Event; use crate::subscription::Subscription; -use log::*; +use log::{debug, info}; use std::collections::HashMap; use uuid::Uuid; @@ -30,6 +30,7 @@ impl Default for ClientConn { impl ClientConn { /// Create a new, empty connection state. + #[must_use] pub fn new() -> Self { let client_id = Uuid::new_v4(); ClientConn { @@ -41,14 +42,16 @@ impl ClientConn { /// Get a short prefix of the client's unique identifier, suitable /// for logging. + #[must_use] pub fn get_client_prefix(&self) -> String { self.client_id.to_string().chars().take(8).collect() } /// Find all matching subscriptions. + #[must_use] pub fn get_matching_subscriptions(&self, e: &Event) -> Vec<&str> { let mut v: Vec<&str> = vec![]; - for (id, sub) in self.subscriptions.iter() { + for (id, sub) in &self.subscriptions { if sub.interested_in_event(e) { v.push(id); } diff --git a/src/event.rs b/src/event.rs index 3bff7e5..01c1b70 100644 --- a/src/event.rs +++ b/src/event.rs @@ -130,8 +130,8 @@ impl Event { // ensure a vector exists for this tag idx.entry(tagnamechar).or_insert_with(HashSet::new); // get the tag vec and insert entry - let tidx = idx.get_mut(&tagnamechar).expect("could not get tag vector"); - tidx.insert(tagval.clone()); + let idx_tag_vec = idx.get_mut(&tagnamechar).expect("could not get tag vector"); + idx_tag_vec.insert(tagval.clone()); } // save the tag structure self.tagidx = Some(idx); diff --git a/src/hexrange.rs b/src/hexrange.rs index 65cb28b..db4eb23 100644 --- a/src/hexrange.rs +++ b/src/hexrange.rs @@ -60,11 +60,10 @@ pub fn hex_range(s: &str) -> Option { upper[byte_len] = b + 16; // bump up the first character in this byte // increment done, stop iterating through the vec break; - } else { - // if it is 'f', reset the byte to 0 and do a carry - // reset and carry - upper[byte_len] = 0; } + // if it is 'f', reset the byte to 0 and do a carry + // reset and carry + upper[byte_len] = 0; // done with odd logic, so don't repeat this odd = false; } else { diff --git a/src/nip05.rs b/src/nip05.rs index d95131a..87e6d5e 100644 --- a/src/nip05.rs +++ b/src/nip05.rs @@ -249,9 +249,9 @@ impl Verifier { // HTTP request with timeout match tokio::time::timeout(Duration::from_secs(5), response_fut).await { Ok(response_res) => { - let response = response_res?; // limit size of verification document to 1MB. const MAX_ALLOWED_RESPONSE_SIZE: u64 = 1024 * 1024; + let response = response_res?; // determine content length from response let response_content_length = match response.body().size_hint().upper() { Some(v) => v, @@ -267,12 +267,11 @@ impl Verifier { let body_matches = body_contains_user(&nip.local, pubkey, body_bytes)?; if body_matches { return Ok(UserWebVerificationStatus::Verified); - } else { - // successful response, parsed as a nip-05 - // document, but this name/pubkey was not - // present. - return Ok(UserWebVerificationStatus::Unverified); } + // successful response, parsed as a nip-05 + // document, but this name/pubkey was not + // present. + return Ok(UserWebVerificationStatus::Unverified); } } else { info!( diff --git a/src/server.rs b/src/server.rs index 080911c..f2defa3 100644 --- a/src/server.rs +++ b/src/server.rs @@ -484,7 +484,7 @@ async fn nostr_server( make_notice_message("binary messages are not accepted")).await.ok(); continue; }, - Some(Ok(Message::Ping(_))) | Some(Ok(Message::Pong(_))) => { + Some(Ok(Message::Ping(_) | Message::Pong(_))) => { // get a ping/pong, ignore. tungstenite will // send responses automatically. continue; @@ -496,10 +496,9 @@ async fn nostr_server( continue; }, None | - Some(Ok(Message::Close(_))) | - Some(Err(WsError::AlreadyClosed)) | - Some(Err(WsError::ConnectionClosed)) | - Some(Err(WsError::Protocol(tungstenite::error::ProtocolError::ResetWithoutClosingHandshake))) + Some(Ok(Message::Close(_)) | + Err(WsError::AlreadyClosed | WsError::ConnectionClosed | + WsError::Protocol(tungstenite::error::ProtocolError::ResetWithoutClosingHandshake))) => { debug!("websocket close from client: {:?}",cid); break;