From e59f7b5a1f655522f1024ae5331ed76e7ed31ea1 Mon Sep 17 00:00:00 2001 From: Radical Date: Wed, 2 Jul 2025 20:47:59 +0200 Subject: [PATCH] style: cargo clippy & cargo fmt --- build.rs | 2 +- src/api/v1/auth/login.rs | 5 +--- src/api/v1/auth/refresh.rs | 4 +-- src/api/v1/auth/register.rs | 16 +++++++---- src/api/v1/auth/reset_password.rs | 3 +-- src/api/v1/channels/uuid/mod.rs | 14 +++++++--- src/api/v1/guilds/uuid/channels.rs | 14 +++++++--- src/api/v1/guilds/uuid/icon.rs | 10 +++++-- src/api/v1/guilds/uuid/invites/mod.rs | 14 +++++++--- src/api/v1/guilds/uuid/roles/mod.rs | 14 +++++++--- src/api/v1/guilds/uuid/roles/uuid.rs | 4 +-- src/config.rs | 2 +- src/error.rs | 2 +- src/main.rs | 4 ++- src/objects/channel.rs | 5 ++-- src/objects/email_token.rs | 16 +++++++---- src/objects/member.rs | 17 +++++++++--- src/objects/mod.rs | 4 +-- src/objects/password_reset_token.rs | 38 ++++++++++++++++++--------- src/objects/role.rs | 16 +++++++---- 20 files changed, 137 insertions(+), 67 deletions(-) diff --git a/build.rs b/build.rs index 45de5ff..55fb863 100644 --- a/build.rs +++ b/build.rs @@ -12,5 +12,5 @@ fn main() { .unwrap_or_else(|| "UNKNOWN".to_string()); // Tell Cargo to set `GIT_SHORT_HASH` for the main compilation - println!("cargo:rustc-env=GIT_SHORT_HASH={}", git_short_hash); + println!("cargo:rustc-env=GIT_SHORT_HASH={git_short_hash}"); } diff --git a/src/api/v1/auth/login.rs b/src/api/v1/auth/login.rs index ac6c1ad..2faaeb4 100644 --- a/src/api/v1/auth/login.rs +++ b/src/api/v1/auth/login.rs @@ -10,10 +10,7 @@ use crate::{ Data, error::Error, schema::*, - utils::{ - PASSWORD_REGEX, generate_token, new_refresh_token_cookie, - user_uuid_from_identifier, - }, + utils::{PASSWORD_REGEX, generate_token, new_refresh_token_cookie, user_uuid_from_identifier}, }; use super::Response; diff --git a/src/api/v1/auth/refresh.rs b/src/api/v1/auth/refresh.rs index 1f4f406..abd9a34 100644 --- a/src/api/v1/auth/refresh.rs +++ b/src/api/v1/auth/refresh.rs @@ -42,7 +42,7 @@ pub async fn res(req: HttpRequest, data: web::Data) -> Result) -> Result { - error!("{}", error); + error!("{error}"); } } } diff --git a/src/api/v1/auth/register.rs b/src/api/v1/auth/register.rs index 49829a1..e57a1ae 100644 --- a/src/api/v1/auth/register.rs +++ b/src/api/v1/auth/register.rs @@ -12,11 +12,17 @@ use uuid::Uuid; use super::Response; use crate::{ - error::Error, objects::Member, schema::{ - access_tokens::{self, dsl as adsl}, refresh_tokens::{self, dsl as rdsl}, users::{self, dsl as udsl} - }, utils::{ - generate_token, new_refresh_token_cookie, EMAIL_REGEX, PASSWORD_REGEX, USERNAME_REGEX - }, Data + Data, + error::Error, + objects::Member, + schema::{ + access_tokens::{self, dsl as adsl}, + refresh_tokens::{self, dsl as rdsl}, + users::{self, dsl as udsl}, + }, + utils::{ + EMAIL_REGEX, PASSWORD_REGEX, USERNAME_REGEX, generate_token, new_refresh_token_cookie, + }, }; #[derive(Deserialize)] diff --git a/src/api/v1/auth/reset_password.rs b/src/api/v1/auth/reset_password.rs index 444266c..9a4497f 100644 --- a/src/api/v1/auth/reset_password.rs +++ b/src/api/v1/auth/reset_password.rs @@ -72,8 +72,7 @@ pub async fn post( reset_password: web::Json, data: web::Data, ) -> Result { - let password_reset_token = - PasswordResetToken::get(&data, reset_password.token.clone()).await?; + let password_reset_token = PasswordResetToken::get(&data, reset_password.token.clone()).await?; password_reset_token .set_password(&data, reset_password.password.clone()) diff --git a/src/api/v1/channels/uuid/mod.rs b/src/api/v1/channels/uuid/mod.rs index bece6ed..d7cfa39 100644 --- a/src/api/v1/channels/uuid/mod.rs +++ b/src/api/v1/channels/uuid/mod.rs @@ -4,7 +4,11 @@ pub mod messages; pub mod socket; use crate::{ - api::v1::auth::check_access_token, error::Error, objects::{Channel, Member, Permissions}, utils::{get_auth_header, global_checks}, Data + Data, + api::v1::auth::check_access_token, + error::Error, + objects::{Channel, Member, Permissions}, + utils::{get_auth_header, global_checks}, }; use actix_web::{HttpRequest, HttpResponse, delete, get, patch, web}; use serde::Deserialize; @@ -57,7 +61,9 @@ pub async fn delete( let member = Member::check_membership(&mut conn, uuid, channel.guild_uuid).await?; - member.check_permission(&data, Permissions::DeleteChannel).await?; + member + .check_permission(&data, Permissions::DeleteChannel) + .await?; channel.delete(&data).await?; @@ -125,7 +131,9 @@ pub async fn patch( let member = Member::check_membership(&mut conn, uuid, channel.guild_uuid).await?; - member.check_permission(&data, Permissions::ManageChannel).await?; + member + .check_permission(&data, Permissions::ManageChannel) + .await?; if let Some(new_name) = &new_info.name { channel.set_name(&data, new_name.to_string()).await?; diff --git a/src/api/v1/guilds/uuid/channels.rs b/src/api/v1/guilds/uuid/channels.rs index db895e4..8fda917 100644 --- a/src/api/v1/guilds/uuid/channels.rs +++ b/src/api/v1/guilds/uuid/channels.rs @@ -1,5 +1,9 @@ use crate::{ - api::v1::auth::check_access_token, error::Error, objects::{Channel, Member, Permissions}, utils::{get_auth_header, global_checks, order_by_is_above}, Data + Data, + api::v1::auth::check_access_token, + error::Error, + objects::{Channel, Member, Permissions}, + utils::{get_auth_header, global_checks, order_by_is_above}, }; use ::uuid::Uuid; use actix_web::{HttpRequest, HttpResponse, get, post, web}; @@ -31,7 +35,7 @@ pub async fn get( Member::check_membership(&mut conn, uuid, guild_uuid).await?; - if let Ok(cache_hit) = data.get_cache_key(format!("{}_channels", guild_uuid)).await { + if let Ok(cache_hit) = data.get_cache_key(format!("{guild_uuid}_channels")).await { return Ok(HttpResponse::Ok() .content_type("application/json") .body(cache_hit)); @@ -42,7 +46,7 @@ pub async fn get( let channels_ordered = order_by_is_above(channels).await?; data.set_cache_key( - format!("{}_channels", guild_uuid), + format!("{guild_uuid}_channels"), channels_ordered.clone(), 1800, ) @@ -72,7 +76,9 @@ pub async fn create( let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?; - member.check_permission(&data, Permissions::CreateChannel).await?; + member + .check_permission(&data, Permissions::CreateChannel) + .await?; let channel = Channel::new( data.clone(), diff --git a/src/api/v1/guilds/uuid/icon.rs b/src/api/v1/guilds/uuid/icon.rs index 0860435..43a5e05 100644 --- a/src/api/v1/guilds/uuid/icon.rs +++ b/src/api/v1/guilds/uuid/icon.rs @@ -5,7 +5,11 @@ use futures_util::StreamExt as _; use uuid::Uuid; use crate::{ - api::v1::auth::check_access_token, error::Error, objects::{Guild, Member, Permissions}, utils::{get_auth_header, global_checks}, Data + Data, + api::v1::auth::check_access_token, + error::Error, + objects::{Guild, Member, Permissions}, + utils::{get_auth_header, global_checks}, }; /// `PUT /api/v1/guilds/{uuid}/icon` Icon upload @@ -34,7 +38,9 @@ pub async fn upload( let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?; - member.check_permission(&data, Permissions::ManageServer).await?; + member + .check_permission(&data, Permissions::ManageServer) + .await?; let mut guild = Guild::fetch_one(&mut conn, guild_uuid).await?; diff --git a/src/api/v1/guilds/uuid/invites/mod.rs b/src/api/v1/guilds/uuid/invites/mod.rs index eb8d2ce..f1c62bc 100644 --- a/src/api/v1/guilds/uuid/invites/mod.rs +++ b/src/api/v1/guilds/uuid/invites/mod.rs @@ -3,7 +3,11 @@ use serde::Deserialize; use uuid::Uuid; use crate::{ - api::v1::auth::check_access_token, error::Error, objects::{Guild, Member, Permissions}, utils::{get_auth_header, global_checks}, Data + Data, + api::v1::auth::check_access_token, + error::Error, + objects::{Guild, Member, Permissions}, + utils::{get_auth_header, global_checks}, }; #[derive(Deserialize)] @@ -59,11 +63,15 @@ pub async fn create( let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?; - member.check_permission(&data, Permissions::CreateInvite).await?; + member + .check_permission(&data, Permissions::CreateInvite) + .await?; let guild = Guild::fetch_one(&mut conn, guild_uuid).await?; - let invite = guild.create_invite(&mut conn, uuid, invite_request.custom_id.clone()).await?; + let invite = guild + .create_invite(&mut conn, uuid, invite_request.custom_id.clone()) + .await?; Ok(HttpResponse::Ok().json(invite)) } diff --git a/src/api/v1/guilds/uuid/roles/mod.rs b/src/api/v1/guilds/uuid/roles/mod.rs index c33f144..5f38923 100644 --- a/src/api/v1/guilds/uuid/roles/mod.rs +++ b/src/api/v1/guilds/uuid/roles/mod.rs @@ -3,7 +3,11 @@ use actix_web::{HttpRequest, HttpResponse, get, post, web}; use serde::Deserialize; use crate::{ - api::v1::auth::check_access_token, error::Error, objects::{Member, Permissions, Role}, utils::{get_auth_header, global_checks, order_by_is_above}, Data + Data, + api::v1::auth::check_access_token, + error::Error, + objects::{Member, Permissions, Role}, + utils::{get_auth_header, global_checks, order_by_is_above}, }; pub mod uuid; @@ -31,7 +35,7 @@ pub async fn get( Member::check_membership(&mut conn, uuid, guild_uuid).await?; - if let Ok(cache_hit) = data.get_cache_key(format!("{}_roles", guild_uuid)).await { + if let Ok(cache_hit) = data.get_cache_key(format!("{guild_uuid}_roles")).await { return Ok(HttpResponse::Ok() .content_type("application/json") .body(cache_hit)); @@ -41,7 +45,7 @@ pub async fn get( let roles_ordered = order_by_is_above(roles).await?; - data.set_cache_key(format!("{}_roles", guild_uuid), roles_ordered.clone(), 1800) + data.set_cache_key(format!("{guild_uuid}_roles"), roles_ordered.clone(), 1800) .await?; Ok(HttpResponse::Ok().json(roles_ordered)) @@ -68,7 +72,9 @@ pub async fn create( let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?; - member.check_permission(&data, Permissions::CreateRole).await?; + member + .check_permission(&data, Permissions::CreateRole) + .await?; let role = Role::new(&mut conn, guild_uuid, role_info.name.clone()).await?; diff --git a/src/api/v1/guilds/uuid/roles/uuid.rs b/src/api/v1/guilds/uuid/roles/uuid.rs index f1a3206..bd747d8 100644 --- a/src/api/v1/guilds/uuid/roles/uuid.rs +++ b/src/api/v1/guilds/uuid/roles/uuid.rs @@ -28,7 +28,7 @@ pub async fn get( Member::check_membership(&mut conn, uuid, guild_uuid).await?; - if let Ok(cache_hit) = data.get_cache_key(format!("{}", role_uuid)).await { + if let Ok(cache_hit) = data.get_cache_key(format!("{role_uuid}")).await { return Ok(HttpResponse::Ok() .content_type("application/json") .body(cache_hit)); @@ -36,7 +36,7 @@ pub async fn get( let role = Role::fetch_one(&mut conn, role_uuid).await?; - data.set_cache_key(format!("{}", role_uuid), role.clone(), 60) + data.set_cache_key(format!("{role_uuid}"), role.clone(), 60) .await?; Ok(HttpResponse::Ok().json(role)) diff --git a/src/config.rs b/src/config.rs index 7c7adb6..2d2c8e0 100644 --- a/src/config.rs +++ b/src/config.rs @@ -76,7 +76,7 @@ pub struct Smtp { impl ConfigBuilder { pub async fn load(path: String) -> Result { - debug!("loading config from: {}", path); + debug!("loading config from: {path}"); let raw = read_to_string(path).await?; let config = toml::from_str(&raw)?; diff --git a/src/error.rs b/src/error.rs index 1b1bfba..35b533d 100644 --- a/src/error.rs +++ b/src/error.rs @@ -79,7 +79,7 @@ pub enum Error { impl ResponseError for Error { fn error_response(&self) -> HttpResponse { - debug!("{:?}", self); + debug!("{self:?}"); error!("{}: {}", self.status_code(), self); HttpResponse::build(self.status_code()) diff --git a/src/main.rs b/src/main.rs index 47794e3..248289a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -67,7 +67,9 @@ async fn main() -> Result<(), Error> { let bunny = config.bunny.clone(); - let bunny_storage = bunny_api_tokio::EdgeStorageClient::new(bunny.api_key, bunny.endpoint, bunny.storage_zone).await?; + let bunny_storage = + bunny_api_tokio::EdgeStorageClient::new(bunny.api_key, bunny.endpoint, bunny.storage_zone) + .await?; let mail = config.mail.clone(); diff --git a/src/objects/channel.rs b/src/objects/channel.rs index 4d52353..7d21a1d 100644 --- a/src/objects/channel.rs +++ b/src/objects/channel.rs @@ -183,12 +183,11 @@ impl Channel { .await?; if data - .get_cache_key(format!("{}_channels", guild_uuid)) + .get_cache_key(format!("{guild_uuid}_channels")) .await .is_ok() { - data.del_cache_key(format!("{}_channels", guild_uuid)) - .await?; + data.del_cache_key(format!("{guild_uuid}_channels")).await?; } Ok(channel) diff --git a/src/objects/email_token.rs b/src/objects/email_token.rs index 4ec6b7e..bfd1ef5 100644 --- a/src/objects/email_token.rs +++ b/src/objects/email_token.rs @@ -16,7 +16,11 @@ pub struct EmailToken { impl EmailToken { pub async fn get(data: &Data, user_uuid: Uuid) -> Result { - let email_token = serde_json::from_str(&data.get_cache_key(format!("{}_email_verify", user_uuid)).await?)?; + let email_token = serde_json::from_str( + &data + .get_cache_key(format!("{user_uuid}_email_verify")) + .await?, + )?; Ok(email_token) } @@ -29,14 +33,15 @@ impl EmailToken { user_uuid: me.uuid, token: token.clone(), // TODO: Check if this can be replaced with something built into valkey - created_at: Utc::now() + created_at: Utc::now(), }; - data.set_cache_key(format!("{}_email_verify", me.uuid), email_token, 86400).await?; + data.set_cache_key(format!("{}_email_verify", me.uuid), email_token, 86400) + .await?; let mut verify_endpoint = data.config.web.frontend_url.join("verify-email")?; - verify_endpoint.set_query(Some(&format!("token={}", token))); + verify_endpoint.set_query(Some(&format!("token={token}"))); let email = data .mail_client @@ -54,7 +59,8 @@ impl EmailToken { } pub async fn delete(&self, data: &Data) -> Result<(), Error> { - data.del_cache_key(format!("{}_email_verify", self.user_uuid)).await?; + data.del_cache_key(format!("{}_email_verify", self.user_uuid)) + .await?; Ok(()) } diff --git a/src/objects/member.rs b/src/objects/member.rs index 20bc848..d33d2b6 100644 --- a/src/objects/member.rs +++ b/src/objects/member.rs @@ -5,7 +5,12 @@ use diesel_async::RunQueryDsl; use serde::{Deserialize, Serialize}; use uuid::Uuid; -use crate::{error::Error, objects::{Permissions, Role}, schema::guild_members, Conn, Data}; +use crate::{ + Conn, Data, + error::Error, + objects::{Permissions, Role}, + schema::guild_members, +}; use super::{User, load_or_empty}; @@ -34,12 +39,16 @@ impl MemberBuilder { }) } - pub async fn check_permission(&self, data: &Data, permission: Permissions) -> Result<(), Error> { + pub async fn check_permission( + &self, + data: &Data, + permission: Permissions, + ) -> Result<(), Error> { if !self.is_owner { - let roles = Role::fetch_from_member(&data, self.uuid).await?; + let roles = Role::fetch_from_member(data, self.uuid).await?; let allowed = roles.iter().any(|r| r.permissions & permission as i64 != 0); if !allowed { - return Err(Error::Forbidden("Not allowed".to_string())) + return Err(Error::Forbidden("Not allowed".to_string())); } } diff --git a/src/objects/mod.rs b/src/objects/mod.rs index 30a0a64..d8de266 100644 --- a/src/objects/mod.rs +++ b/src/objects/mod.rs @@ -26,8 +26,8 @@ pub use me::Me; pub use member::Member; pub use message::Message; pub use password_reset_token::PasswordResetToken; -pub use role::Role; pub use role::Permissions; +pub use role::Role; pub use user::User; use crate::error::Error; @@ -106,7 +106,7 @@ impl MailClient { let response = mailer.send(email).await?; - debug!("mail sending response: {:?}", response); + debug!("mail sending response: {response:?}"); Ok(()) } diff --git a/src/objects/password_reset_token.rs b/src/objects/password_reset_token.rs index e14d25a..7f714ef 100644 --- a/src/objects/password_reset_token.rs +++ b/src/objects/password_reset_token.rs @@ -3,19 +3,17 @@ use argon2::{ password_hash::{SaltString, rand_core::OsRng}, }; use chrono::Utc; -use diesel::{ - ExpressionMethods, QueryDsl, update, -}; +use diesel::{ExpressionMethods, QueryDsl, update}; use diesel_async::RunQueryDsl; use lettre::message::MultiPart; use serde::{Deserialize, Serialize}; use uuid::Uuid; use crate::{ + Data, error::Error, schema::users, - utils::{generate_token, global_checks, user_uuid_from_identifier, PASSWORD_REGEX}, - Data + utils::{PASSWORD_REGEX, generate_token, global_checks, user_uuid_from_identifier}, }; #[derive(Serialize, Deserialize)] @@ -27,8 +25,12 @@ pub struct PasswordResetToken { impl PasswordResetToken { pub async fn get(data: &Data, token: String) -> Result { - let user_uuid: Uuid = serde_json::from_str(&data.get_cache_key(format!("{}", token)).await?)?; - let password_reset_token = serde_json::from_str(&data.get_cache_key(format!("{}_password_reset", user_uuid)).await?)?; + let user_uuid: Uuid = serde_json::from_str(&data.get_cache_key(token.to_string()).await?)?; + let password_reset_token = serde_json::from_str( + &data + .get_cache_key(format!("{user_uuid}_password_reset")) + .await?, + )?; Ok(password_reset_token) } @@ -41,7 +43,11 @@ impl PasswordResetToken { let user_uuid = user_uuid_from_identifier(&mut conn, &identifier).await?; - let password_reset_token = serde_json::from_str(&data.get_cache_key(format!("{}_password_reset", user_uuid)).await?)?; + let password_reset_token = serde_json::from_str( + &data + .get_cache_key(format!("{user_uuid}_password_reset")) + .await?, + )?; Ok(password_reset_token) } @@ -69,12 +75,17 @@ impl PasswordResetToken { created_at: Utc::now(), }; - data.set_cache_key(format!("{}_password_reset", user_uuid), password_reset_token, 86400).await?; + data.set_cache_key( + format!("{user_uuid}_password_reset"), + password_reset_token, + 86400, + ) + .await?; data.set_cache_key(token.clone(), user_uuid, 86400).await?; let mut reset_endpoint = data.config.web.frontend_url.join("reset-password")?; - reset_endpoint.set_query(Some(&format!("token={}", token))); + reset_endpoint.set_query(Some(&format!("token={token}"))); let email = data .mail_client @@ -134,12 +145,13 @@ impl PasswordResetToken { data.mail_client.send_mail(email).await?; - self.delete(&data).await + self.delete(data).await } pub async fn delete(&self, data: &Data) -> Result<(), Error> { - data.del_cache_key(format!("{}_password_reset", &self.user_uuid)).await?; - data.del_cache_key(format!("{}", &self.token)).await?; + data.del_cache_key(format!("{}_password_reset", &self.user_uuid)) + .await?; + data.del_cache_key(self.token.to_string()).await?; Ok(()) } diff --git a/src/objects/role.rs b/src/objects/role.rs index a78798a..4a75628 100644 --- a/src/objects/role.rs +++ b/src/objects/role.rs @@ -6,7 +6,12 @@ use diesel_async::RunQueryDsl; use serde::{Deserialize, Serialize}; use uuid::Uuid; -use crate::{error::Error, schema::{role_members, roles}, utils::order_by_is_above, Conn, Data}; +use crate::{ + Conn, Data, + error::Error, + schema::{role_members, roles}, + utils::order_by_is_above, +}; use super::{HasIsAbove, HasUuid, load_or_empty}; @@ -70,8 +75,8 @@ impl Role { } pub async fn fetch_from_member(data: &Data, member_uuid: Uuid) -> Result, Error> { - if let Ok(roles) = data.get_cache_key(format!("{}_roles", member_uuid)).await { - return Ok(serde_json::from_str(&roles)?) + if let Ok(roles) = data.get_cache_key(format!("{member_uuid}_roles")).await { + return Ok(serde_json::from_str(&roles)?); } let mut conn = data.pool.get().await?; @@ -91,7 +96,8 @@ impl Role { roles.push(membership.fetch_role(&mut conn).await?); } - data.set_cache_key(format!("{}_roles", member_uuid), roles.clone(), 300).await?; + data.set_cache_key(format!("{member_uuid}_roles"), roles.clone(), 300) + .await?; Ok(roles) } @@ -108,7 +114,7 @@ impl Role { } pub async fn fetch_permissions(&self) -> Vec { - Permissions::fetch_permissions(self.permissions.clone()) + Permissions::fetch_permissions(self.permissions) } pub async fn new(conn: &mut Conn, guild_uuid: Uuid, name: String) -> Result {