From e9318ea4dca617ced1664cc92a1b712da8371686 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Thu, 24 Aug 2023 22:30:13 +0200 Subject: [PATCH] start adding auditlogreason to routes that take it --- src/api/channels/channels.rs | 47 +++++++++++------ src/api/channels/messages.rs | 92 ++++++++++++++++++++------------- src/api/channels/permissions.rs | 17 +++--- src/api/guilds/guilds.rs | 23 +++++---- 4 files changed, 111 insertions(+), 68 deletions(-) diff --git a/src/api/channels/channels.rs b/src/api/channels/channels.rs index 6fd0d79..1bb7538 100644 --- a/src/api/channels/channels.rs +++ b/src/api/channels/channels.rs @@ -33,15 +33,23 @@ impl Channel { /// /// # Reference /// See - pub async fn delete(self, user: &mut ChorusUser) -> ChorusResult<()> { + pub async fn delete( + self, + audit_log_reason: Option, + user: &mut ChorusUser, + ) -> ChorusResult<()> { + let mut request = Client::new() + .delete(format!( + "{}/channels/{}", + user.belongs_to.borrow().urls.api, + self.id + )) + .header("Authorization", user.token()); + if let Some(reason) = audit_log_reason { + request = request.header("X-Audit-Log-Reason", reason); + } let chorus_request = ChorusRequest { - request: Client::new() - .delete(format!( - "{}/channels/{}", - user.belongs_to.borrow().urls.api, - self.id - )) - .header("Authorization", user.token()), + request, limit_type: LimitType::Channel(self.id), }; chorus_request.handle_request_as_result(user).await @@ -64,19 +72,24 @@ impl Channel { pub async fn modify( &self, modify_data: ChannelModifySchema, + audit_log_reason: Option, user: &mut ChorusUser, ) -> ChorusResult { let channel_id = self.id; + let mut request = Client::new() + .patch(format!( + "{}/channels/{}", + user.belongs_to.borrow().urls.api, + channel_id + )) + .header("Authorization", user.token()) + .header("Content-Type", "application/json") + .body(to_string(&modify_data).unwrap()); + if let Some(reason) = audit_log_reason { + request = request.header("X-Audit-Log-Reason", reason); + } let chorus_request = ChorusRequest { - request: Client::new() - .patch(format!( - "{}/channels/{}", - user.belongs_to.borrow().urls.api, - channel_id - )) - .header("Authorization", user.token()) - .header("Content-Type", "application/json") - .body(to_string(&modify_data).unwrap()), + request, limit_type: LimitType::Channel(channel_id), }; chorus_request.deserialize_response::(user).await diff --git a/src/api/channels/messages.rs b/src/api/channels/messages.rs index 2011c40..6f6c2be 100644 --- a/src/api/channels/messages.rs +++ b/src/api/channels/messages.rs @@ -162,18 +162,23 @@ impl Message { pub async fn sticky( channel_id: Snowflake, message_id: Snowflake, + audit_log_reason: Option, user: &mut ChorusUser, ) -> ChorusResult<()> { + let mut request = Client::new() + .put(format!( + "{}/channels/{}/pins/{}", + user.belongs_to.borrow().urls.api, + channel_id, + message_id + )) + .header("Authorization", user.token()) + .header("Content-Type", "application/json"); + if let Some(reason) = audit_log_reason { + request = request.header("X-Audit-Log-Reason", reason); + } let chorus_request = ChorusRequest { - request: Client::new() - .put(format!( - "{}/channels/{}/pins/{}", - user.belongs_to.borrow().urls.api, - channel_id, - message_id - )) - .header("Authorization", user.token()) - .header("Content-Type", "application/json"), + request, limit_type: LimitType::Channel(channel_id), }; chorus_request.handle_request_as_result(user).await @@ -185,18 +190,23 @@ impl Message { pub async fn unsticky( channel_id: Snowflake, message_id: Snowflake, + audit_log_reason: Option, user: &mut ChorusUser, ) -> ChorusResult<()> { + let mut request = Client::new() + .delete(format!( + "{}/channels/{}/pins/{}", + user.belongs_to.borrow().urls.api, + channel_id, + message_id + )) + .header("Authorization", user.token()) + .header("Content-Type", "application/json"); + if let Some(reason) = audit_log_reason { + request = request.header("X-Audit-Log-Reason", reason); + } let chorus_request = ChorusRequest { - request: Client::new() - .delete(format!( - "{}/channels/{}/pins/{}", - user.belongs_to.borrow().urls.api, - channel_id, - message_id - )) - .header("Authorization", user.token()) - .header("Content-Type", "application/json"), + request, limit_type: LimitType::Channel(channel_id), }; chorus_request.handle_request_as_result(user).await @@ -370,18 +380,23 @@ impl Message { pub async fn delete( channel_id: Snowflake, message_id: Snowflake, + audit_log_reason: Option, user: &mut ChorusUser, ) -> ChorusResult<()> { + let mut request = Client::new() + .delete(format!( + "{}/channels/{}/messages/{}", + user.belongs_to.borrow().urls.api, + channel_id, + message_id + )) + .header("Authorization", user.token()) + .header("Content-Type", "application/json"); + if let Some(reason) = audit_log_reason { + request = request.header("X-Audit-Log-Reason", reason); + } let chorus_request = ChorusRequest { - request: Client::new() - .delete(format!( - "{}/channels/{}/messages/{}", - user.belongs_to.borrow().urls.api, - channel_id, - message_id - )) - .header("Authorization", user.token()) - .header("Content-Type", "application/json"), + request, limit_type: LimitType::Channel(channel_id), }; chorus_request.handle_request_as_result(user).await @@ -399,6 +414,7 @@ impl Message { pub async fn bulk_delete( channel_id: Snowflake, messages: Vec, + audit_log_reason: Option, user: &mut ChorusUser, ) -> ChorusResult<()> { if messages.len() < 2 { @@ -406,16 +422,20 @@ impl Message { error: "`messages` must contain at least 2 entries.".to_string(), }); } + let mut request = Client::new() + .post(format!( + "{}/channels/{}/messages/bulk-delete", + user.belongs_to.borrow().urls.api, + channel_id, + )) + .header("Authorization", user.token()) + .header("Content-Type", "application/json") + .body(to_string(&messages).unwrap()); + if let Some(reason) = audit_log_reason { + request = request.header("X-Audit-Log-Reason", reason); + } let chorus_request = ChorusRequest { - request: Client::new() - .post(format!( - "{}/channels/{}/messages/bulk-delete", - user.belongs_to.borrow().urls.api, - channel_id, - )) - .header("Authorization", user.token()) - .header("Content-Type", "application/json") - .body(to_string(&messages).unwrap()), + request, limit_type: LimitType::Channel(channel_id), }; chorus_request.handle_request_as_result(user).await diff --git a/src/api/channels/permissions.rs b/src/api/channels/permissions.rs index 13da01d..9a4c01d 100644 --- a/src/api/channels/permissions.rs +++ b/src/api/channels/permissions.rs @@ -20,9 +20,10 @@ impl types::Channel { /// /// # Reference /// See - pub async fn edit_permissions( + pub async fn modify_permissions( user: &mut ChorusUser, channel_id: Snowflake, + audit_log_reason: Option, overwrite: PermissionOverwrite, ) -> ChorusResult<()> { let url = format!( @@ -39,12 +40,16 @@ impl types::Channel { }); } }; + let mut request = Client::new() + .put(url) + .header("Authorization", user.token()) + .header("Content-Type", "application/json") + .body(body); + if let Some(reason) = audit_log_reason { + request = request.header("X-Audit-Log-Reason", reason); + } let chorus_request = ChorusRequest { - request: Client::new() - .put(url) - .header("Authorization", user.token()) - .header("Content-Type", "application/json") - .body(body), + request, limit_type: LimitType::Channel(channel_id), }; chorus_request.handle_request_as_result(user).await diff --git a/src/api/guilds/guilds.rs b/src/api/guilds/guilds.rs index a56b4c4..ec33721 100644 --- a/src/api/guilds/guilds.rs +++ b/src/api/guilds/guilds.rs @@ -198,17 +198,22 @@ impl Channel { user: &mut ChorusUser, guild_id: Snowflake, schema: ChannelCreateSchema, + audit_log_reason: Option, ) -> ChorusResult { + let mut request = Client::new() + .post(format!( + "{}/guilds/{}/channels", + user.belongs_to.borrow().urls.api, + guild_id + )) + .header("Authorization", user.token()) + .header("Content-Type", "application/json") + .body(to_string(&schema).unwrap()); + if let Some(reason) = audit_log_reason { + request = request.header("X-Audit-Log-Reason", reason); + } let chorus_request = ChorusRequest { - request: Client::new() - .post(format!( - "{}/guilds/{}/channels", - user.belongs_to.borrow().urls.api, - guild_id - )) - .header("Authorization", user.token()) - .header("Content-Type", "application/json") - .body(to_string(&schema).unwrap()), + request, limit_type: LimitType::Guild(guild_id), }; chorus_request.deserialize_response::(user).await