commit e732f918f9e7b0e381101755fae4ed0645f07bfb
parent ca0f01c94b9ce23e746a08da3ad29a4f473ddcd9
Author: Greg Heartsfield <scsibug@imap.cc>
Date: Sat, 11 Dec 2021 21:56:52 -0600
refactor: clippy suggestions
Diffstat:
7 files changed, 37 insertions(+), 42 deletions(-)
diff --git a/src/close.rs b/src/close.rs
@@ -22,9 +22,9 @@ impl From<CloseCmd> for Result<Close> {
fn from(cc: CloseCmd) -> Result<Close> {
// ensure command is correct
if cc.cmd != "CLOSE" {
- return Err(Error::CommandUnknownError);
+ Err(Error::CommandUnknownError)
} else {
- return Ok(Close { id: cc.id });
+ Ok(Close { id: cc.id })
}
}
}
diff --git a/src/conn.rs b/src/conn.rs
@@ -20,6 +20,12 @@ pub struct ClientConn {
max_subs: usize,
}
+impl Default for ClientConn {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
impl ClientConn {
/// Create a new, empty connection state.
pub fn new() -> Self {
@@ -77,7 +83,7 @@ impl ClientConn {
"Registered new subscription, currently have {} active subs",
self.subscriptions.len()
);
- return Ok(());
+ Ok(())
}
/// Remove the subscription for this connection.
diff --git a/src/db.rs b/src/db.rs
@@ -130,7 +130,7 @@ pub fn write_event(conn: &mut Connection, e: &Event) -> Result<usize> {
let ev_id = tx.last_insert_rowid();
// add all event tags into the event_ref table
let etags = e.get_event_tags();
- if etags.len() > 0 {
+ if !etags.is_empty() {
for etag in etags.iter() {
tx.execute(
"INSERT OR IGNORE INTO event_ref (event_id, referenced_event) VALUES (?1, ?2)",
@@ -140,7 +140,7 @@ pub fn write_event(conn: &mut Connection, e: &Event) -> Result<usize> {
}
// add all event tags into the pubkey_ref table
let ptags = e.get_pubkey_tags();
- if ptags.len() > 0 {
+ if !ptags.is_empty() {
for ptag in ptags.iter() {
tx.execute(
"INSERT OR IGNORE INTO event_ref (event_id, referenced_pubkey) VALUES (?1, ?2)",
@@ -238,7 +238,7 @@ fn query_from_sub(sub: &Subscription) -> String {
filter_components.push(created_clause);
}
// combine all clauses, and add to filter_clauses
- if filter_components.len() > 0 {
+ if !filter_components.is_empty() {
let mut fc = "( ".to_owned();
fc.push_str(&filter_components.join(" AND "));
fc.push_str(" )");
@@ -247,7 +247,7 @@ fn query_from_sub(sub: &Subscription) -> String {
}
// combine all filters with OR clauses, if any exist
- if filter_clauses.len() > 0 {
+ if !filter_clauses.is_empty() {
query.push_str(" WHERE ");
query.push_str(&filter_clauses.join(" OR "));
}
diff --git a/src/event.rs b/src/event.rs
@@ -39,7 +39,7 @@ where
D: Deserializer<'de>,
{
let opt = Option::deserialize(deserializer)?;
- Ok(opt.unwrap_or_else(|| vec![]))
+ Ok(opt.unwrap_or_else(Vec::new))
}
/// Convert network event to parsed/validated event.
@@ -47,11 +47,11 @@ impl From<EventCmd> for Result<Event> {
fn from(ec: EventCmd) -> Result<Event> {
// ensure command is correct
if ec.cmd != "EVENT" {
- return Err(CommandUnknownError);
+ Err(CommandUnknownError)
} else if ec.event.is_valid() {
- return Ok(ec.event);
+ Ok(ec.event)
} else {
- return Err(EventInvalid);
+ Err(EventInvalid)
}
}
}
@@ -76,7 +76,7 @@ impl Event {
}
let c = c_opt.unwrap();
// * compute the sha256sum.
- let digest: sha256::Hash = sha256::Hash::hash(&c.as_bytes());
+ let digest: sha256::Hash = sha256::Hash::hash(c.as_bytes());
let hex_digest = format!("{:x}", digest);
// * ensure the id matches the computed sha256sum.
if self.id != hex_digest {
@@ -88,10 +88,7 @@ impl Event {
let message = secp256k1::Message::from(digest);
let pubkey = schnorrsig::PublicKey::from_str(&self.pubkey).unwrap();
let verify = secp.schnorrsig_verify(&sig, &message, &pubkey);
- match verify {
- Ok(()) => true,
- _ => false,
- }
+ matches!(verify, Ok(()))
}
/// Convert event to canonical representation for signing.
@@ -99,7 +96,7 @@ impl Event {
// create a JsonValue for each event element
let mut c: Vec<Value> = vec![];
// id must be set to 0
- let id = Number::from(0 as u64);
+ let id = Number::from(0_u64);
c.push(serde_json::Value::Number(id));
// public key
c.push(Value::String(self.pubkey.to_owned()));
@@ -135,10 +132,8 @@ impl Event {
pub fn get_event_tags(&self) -> Vec<&str> {
let mut etags = vec![];
for t in self.tags.iter() {
- if t.len() >= 2 {
- if t.get(0).unwrap() == "e" {
- etags.push(&t.get(1).unwrap()[..]);
- }
+ if t.len() >= 2 && t.get(0).unwrap() == "e" {
+ etags.push(&t.get(1).unwrap()[..]);
}
}
etags
@@ -148,10 +143,8 @@ impl Event {
pub fn get_pubkey_tags(&self) -> Vec<&str> {
let mut ptags = vec![];
for t in self.tags.iter() {
- if t.len() >= 2 {
- if t.get(0).unwrap() == "p" {
- ptags.push(&t.get(1).unwrap()[..]);
- }
+ if t.len() >= 2 && t.get(0).unwrap() == "p" {
+ ptags.push(&t.get(1).unwrap()[..]);
}
}
ptags
diff --git a/src/main.rs b/src/main.rs
@@ -177,12 +177,9 @@ async fn nostr_server(
match parsed {
Ok(c) => {
let stop_tx = running_queries.remove(&c.id);
- match stop_tx {
- Some(tx) => {
- info!("Removing query, telling DB to abandon query");
- tx.send(()).ok();
- },
- None => {}
+ if let Some(tx) = stop_tx {
+ info!("Removing query, telling DB to abandon query");
+ tx.send(()).ok();
}
conn.unsubscribe(c);
},
diff --git a/src/protostream.rs b/src/protostream.rs
@@ -44,7 +44,7 @@ pub struct NostrStream {
/// Given a websocket, return a protocol stream wrapper.
pub fn wrap_ws_in_nostr(ws: WebSocketStream<TcpStream>) -> NostrStream {
- return NostrStream { ws_stream: ws };
+ NostrStream { ws_stream: ws }
}
/// Implement the [`Stream`] interface to produce Nostr messages.
diff --git a/src/subscription.rs b/src/subscription.rs
@@ -52,18 +52,18 @@ impl<'de> Deserialize<'de> for Subscription {
// check for array
let va = v
.as_array_mut()
- .ok_or(serde::de::Error::custom("not array"))?;
+ .ok_or_else(|| serde::de::Error::custom("not array"))?;
// check length
if va.len() < 3 {
return Err(serde::de::Error::custom("not enough fields"));
}
- let mut i = va.into_iter();
+ let mut i = va.iter_mut();
// get command ("REQ") and ensure it is a string
let req_cmd_str: serde_json::Value = i.next().unwrap().take();
- let req = req_cmd_str.as_str().ok_or(serde::de::Error::custom(
- "first element of request was not a string",
- ))?;
+ let req = req_cmd_str
+ .as_str()
+ .ok_or_else(|| serde::de::Error::custom("first element of request was not a string"))?;
if req != "REQ" {
return Err(serde::de::Error::custom("missing REQ command"));
}
@@ -72,7 +72,7 @@ impl<'de> Deserialize<'de> for Subscription {
let sub_id_str: serde_json::Value = i.next().unwrap().take();
let sub_id = sub_id_str
.as_str()
- .ok_or(serde::de::Error::custom("missing subscription id"))?;
+ .ok_or_else(|| serde::de::Error::custom("missing subscription id"))?;
let mut filters = vec![];
for fv in i {
@@ -100,7 +100,7 @@ impl Subscription {
return true;
}
}
- return false;
+ false
}
}
@@ -135,9 +135,8 @@ impl ReqFilter {
self.id.as_ref().map(|v| v == &event.id).unwrap_or(true)
&& self.since.map(|t| event.created_at > t).unwrap_or(true)
&& self.kind_match(event.kind)
- && self.author_match(&event)
- && self.event_match(&event)
- && true // match if all other fields are absent
+ && self.author_match(event)
+ && self.event_match(event)
}
}