From 9d86cf15f0275ffeee4519bd054e3b61dc8992ac Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Thu, 26 Feb 2026 15:42:09 +0000 Subject: chore: apply cargo fmt and fix clippy warnings Fix pre-existing clippy lints: - &PathBuf -> &Path in audit_cleanup.rs - too_many_arguments on process_newly_available_git_data, process_purgatory_announcements, and HttpService::new - clone_on_copy for PublicKey (Copy type) in purgatory cleanup loop --- src/nostr/builder.rs | 1 - src/nostr/policy/announcement.rs | 18 +++++++--------- src/nostr/policy/deletion.rs | 45 ++++++++++++++++++++++++++-------------- src/nostr/policy/pr_event.rs | 10 ++++++--- src/nostr/policy/state.rs | 6 +++++- 5 files changed, 50 insertions(+), 30 deletions(-) (limited to 'src/nostr') diff --git a/src/nostr/builder.rs b/src/nostr/builder.rs index a0088e1..03132bf 100644 --- a/src/nostr/builder.rs +++ b/src/nostr/builder.rs @@ -18,7 +18,6 @@ use crate::nostr::policy::{ ReferenceResult, RelatedEventPolicy, StatePolicy, StateResult, }; - /// Type alias for the shared database used by the relay pub type SharedDatabase = Arc; diff --git a/src/nostr/policy/announcement.rs b/src/nostr/policy/announcement.rs index b366f0b..aba5181 100644 --- a/src/nostr/policy/announcement.rs +++ b/src/nostr/policy/announcement.rs @@ -70,7 +70,10 @@ impl AnnouncementPolicy { .is_some_and(|entry| event.created_at > entry.event.created_at); if should_evict { - self.remove_purgatory_announcement(&event.pubkey, &announcement.identifier); + self.remove_purgatory_announcement( + &event.pubkey, + &announcement.identifier, + ); } match self @@ -145,10 +148,9 @@ impl AnnouncementPolicy { ); AnnouncementResult::AcceptPurgatory } - Err(e) => AnnouncementResult::Reject(format!( - "Failed to parse announcement: {}", - e - )), + Err(e) => { + AnnouncementResult::Reject(format!("Failed to parse announcement: {}", e)) + } } } // AcceptPurgatory shouldn't come from validate_announcement, but handle it @@ -161,11 +163,7 @@ impl AnnouncementPolicy { /// Called when a replacement announcement arrives for a (pubkey, identifier) pair /// that is currently in purgatory. Updates the purgatory entry and extends the /// expiry so the new announcement has a fresh waiting window. - fn replace_purgatory_announcement( - &self, - event: &Event, - announcement: &RepositoryAnnouncement, - ) { + fn replace_purgatory_announcement(&self, event: &Event, announcement: &RepositoryAnnouncement) { let repo_path = self.ctx.git_data_path.join(announcement.repo_path()); let relays: HashSet = announcement.relays.iter().cloned().collect(); diff --git a/src/nostr/policy/deletion.rs b/src/nostr/policy/deletion.rs index 6457c90..c5a52d4 100644 --- a/src/nostr/policy/deletion.rs +++ b/src/nostr/policy/deletion.rs @@ -155,7 +155,9 @@ impl DeletionPolicy { author = %author.to_hex(), "Deletion request: removing purgatory state event by event ID" ); - self.ctx.purgatory.remove_state_event(&identifier, &entry.event.id); + self.ctx + .purgatory + .remove_state_event(&identifier, &entry.event.id); return; // event IDs are unique } } @@ -223,7 +225,9 @@ impl DeletionPolicy { if entry.author == *author && entry.event.created_at.as_secs() <= deletion_created_at { - self.ctx.purgatory.remove_state_event(identifier, &entry.event.id); + self.ctx + .purgatory + .remove_state_event(identifier, &entry.event.id); removed += 1; } } @@ -306,7 +310,10 @@ mod tests { EventBuilder::new(Kind::GitRepoAnnouncement, "") .tags(vec![ Tag::identifier(identifier), - Tag::custom(TagKind::custom("clone"), vec!["https://example.com/repo.git"]), + Tag::custom( + TagKind::custom("clone"), + vec!["https://example.com/repo.git"], + ), ]) .sign_with_keys(keys) .unwrap() @@ -331,7 +338,9 @@ mod tests { let announcement = make_announcement_event(&keys, identifier); add_to_purgatory(&ctx, &announcement, identifier); - assert!(ctx.purgatory.has_purgatory_announcement(&keys.public_key(), identifier)); + assert!(ctx + .purgatory + .has_purgatory_announcement(&keys.public_key(), identifier)); // Build kind 5 deletion event referencing the announcement by event ID let deletion = EventBuilder::new(Kind::EventDeletion, "") @@ -347,7 +356,8 @@ mod tests { assert!(matches!(result, WritePolicyResult::Accept)); assert!( - !ctx.purgatory.has_purgatory_announcement(&keys.public_key(), identifier), + !ctx.purgatory + .has_purgatory_announcement(&keys.public_key(), identifier), "Purgatory entry should have been removed" ); } @@ -361,7 +371,9 @@ mod tests { let announcement = make_announcement_event(&keys, identifier); add_to_purgatory(&ctx, &announcement, identifier); - assert!(ctx.purgatory.has_purgatory_announcement(&keys.public_key(), identifier)); + assert!(ctx + .purgatory + .has_purgatory_announcement(&keys.public_key(), identifier)); // Build kind 5 deletion event referencing the announcement by coordinate let coord = format!("30617:{}:{}", keys.public_key().to_hex(), identifier); @@ -378,7 +390,8 @@ mod tests { assert!(matches!(result, WritePolicyResult::Accept)); assert!( - !ctx.purgatory.has_purgatory_announcement(&keys.public_key(), identifier), + !ctx.purgatory + .has_purgatory_announcement(&keys.public_key(), identifier), "Purgatory entry should have been removed" ); } @@ -407,7 +420,8 @@ mod tests { assert!(matches!(result, WritePolicyResult::Accept)); assert!( - ctx.purgatory.has_purgatory_announcement(&owner_keys.public_key(), identifier), + ctx.purgatory + .has_purgatory_announcement(&owner_keys.public_key(), identifier), "Purgatory entry should NOT have been removed by wrong author" ); } @@ -438,7 +452,8 @@ mod tests { assert!(matches!(result, WritePolicyResult::Accept)); assert!( - ctx.purgatory.has_purgatory_announcement(&owner_keys.public_key(), identifier), + ctx.purgatory + .has_purgatory_announcement(&owner_keys.public_key(), identifier), "Purgatory entry should NOT have been removed by wrong author" ); } @@ -450,11 +465,10 @@ mod tests { // No purgatory entry exists — deletion should still be accepted let deletion = EventBuilder::new(Kind::EventDeletion, "") - .tags(vec![ - Tag::custom(TagKind::custom("a"), vec![ - format!("30617:{}:nonexistent", keys.public_key().to_hex()) - ]), - ]) + .tags(vec![Tag::custom( + TagKind::custom("a"), + vec![format!("30617:{}:nonexistent", keys.public_key().to_hex())], + )]) .sign_with_keys(&keys) .unwrap(); @@ -491,7 +505,8 @@ mod tests { assert!(matches!(result, WritePolicyResult::Accept)); assert!( - ctx.purgatory.has_purgatory_announcement(&keys.public_key(), identifier), + ctx.purgatory + .has_purgatory_announcement(&keys.public_key(), identifier), "Purgatory entry should NOT be removed: entry is newer than deletion request" ); } diff --git a/src/nostr/policy/pr_event.rs b/src/nostr/policy/pr_event.rs index 52747a4..e4a64b8 100644 --- a/src/nostr/policy/pr_event.rs +++ b/src/nostr/policy/pr_event.rs @@ -7,7 +7,9 @@ use nostr_relay_builder::prelude::Event; use super::PolicyContext; use crate::git; -use crate::git::authorization::{collect_authorized_maintainers, fetch_repository_data_excluding_purgatory}; +use crate::git::authorization::{ + collect_authorized_maintainers, fetch_repository_data_excluding_purgatory, +}; /// Policy for validating PR and PR Update events #[derive(Clone)] @@ -131,7 +133,8 @@ impl PrEventPolicy { // only be accepted for announcements that have been promoted (validated). // If the announcement is still in purgatory, the PR event should also go // to purgatory and wait for the announcement to be promoted. - let db_repo_data = fetch_repository_data_excluding_purgatory(&self.ctx.database, &identifier).await?; + let db_repo_data = + fetch_repository_data_excluding_purgatory(&self.ctx.database, &identifier).await?; // Extract owner pubkey from source repo path let owner_pubkey = crate::git::sync::extract_owner_from_repo_path( @@ -211,7 +214,8 @@ impl PrEventPolicy { // only be accepted for announcements that have been promoted (validated). // If the announcement is still in purgatory, the PR event should also go // to purgatory and wait for the announcement to be promoted. - let db_repo_data = fetch_repository_data_excluding_purgatory(&self.ctx.database, identifier).await?; + let db_repo_data = + fetch_repository_data_excluding_purgatory(&self.ctx.database, identifier).await?; // 3. Extract list of maintainers from "a 30617::" tags let mut maintainer_pubkeys = std::collections::HashSet::new(); diff --git a/src/nostr/policy/state.rs b/src/nostr/policy/state.rs index df743ae..80fe84c 100644 --- a/src/nostr/policy/state.rs +++ b/src/nostr/policy/state.rs @@ -158,7 +158,11 @@ impl StatePolicy { // authorized it. for owner_hex in &authorized_owners { if let Ok(owner_pk) = nostr_sdk::PublicKey::from_hex(owner_hex) { - if self.ctx.purgatory.has_purgatory_announcement(&owner_pk, &state.identifier) { + if self + .ctx + .purgatory + .has_purgatory_announcement(&owner_pk, &state.identifier) + { self.ctx.purgatory.extend_announcement_expiry( &owner_pk, &state.identifier, -- cgit v1.2.3