From c544bd409d36a42a19778bb258d73bf4884f042b Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Thu, 11 May 2023 23:35:36 +0200 Subject: [PATCH] work on implementing message attachment sending --- src/api/channels/messages.rs | 67 +++++++++++++++++++++++++++++++++++- src/api/schemas.rs | 4 --- src/api/types.rs | 22 ++++++------ 3 files changed, 77 insertions(+), 16 deletions(-) diff --git a/src/api/channels/messages.rs b/src/api/channels/messages.rs index e914397..3f34100 100644 --- a/src/api/channels/messages.rs +++ b/src/api/channels/messages.rs @@ -143,6 +143,8 @@ pub mod messages { #[cfg(test)] mod test { + use std::borrow::Cow; + use crate::{ api::{AuthUsername, LoginSchema}, instance::Instance, @@ -163,7 +165,6 @@ mod test { None, None, None, - None, ); let mut instance = Instance::new( crate::URLBundle { @@ -194,4 +195,68 @@ mod test { .await .unwrap(); } + + #[tokio::test] + async fn send_message_two() { + let channel_id = "1104413094102290492".to_string(); + + let attachment = crate::api::types::PartialDiscordFileAttachment { + id: None, + filename: Some("test".to_string()), + description: None, + content_type: None, + size: None, + url: None, + proxy_url: None, + width: None, + height: None, + ephemeral: Some(false), + duration_secs: None, + waveform: None, + content: vec![8], + }; + + let mut message = crate::api::schemas::MessageSendSchema::new( + None, + Some("ashjkdhjksdfgjsdfzjkhsdvhjksdf".to_string()), + None, + None, + None, + None, + None, + None, + None, + Some(vec![attachment.clone()]), + ); + let mut instance = Instance::new( + crate::URLBundle { + api: "http://localhost:3001/api".to_string(), + wss: "ws://localhost:3001/".to_string(), + cdn: "http://localhost:3001".to_string(), + }, + LimitedRequester::new().await, + ) + .await + .unwrap(); + let login_schema: LoginSchema = LoginSchema::new( + AuthUsername::new("user1@gmail.com".to_string()).unwrap(), + "user".to_string(), + None, + None, + None, + None, + ) + .unwrap(); + let login_result = instance.login_account(&login_schema).await.unwrap(); + let token = login_result.token; + let settings = login_result.settings; + let limits = instance.limits.clone(); + let mut user = crate::api::types::User::new(&mut instance, token, limits, settings, None); + let vec_attach = vec![attachment.clone()]; + let arg = Some(&vec_attach); + let response = user + .send_message(&mut message, &channel_id, arg) + .await + .unwrap(); + } } diff --git a/src/api/schemas.rs b/src/api/schemas.rs index 0c07298..ccdff53 100644 --- a/src/api/schemas.rs +++ b/src/api/schemas.rs @@ -257,8 +257,6 @@ pub struct MessageSendSchema { message_reference: Option, components: Option>, sticker_ids: Option>, - #[serde(flatten)] - files: Option>>, attachments: Option>, } @@ -274,7 +272,6 @@ impl MessageSendSchema { message_reference: Option, components: Option>, sticker_ids: Option>, - files: Option>>, attachments: Option>, ) -> MessageSendSchema { MessageSendSchema { @@ -287,7 +284,6 @@ impl MessageSendSchema { message_reference, components, sticker_ids, - files, attachments, } } diff --git a/src/api/types.rs b/src/api/types.rs index cb46e9a..00d47a7 100644 --- a/src/api/types.rs +++ b/src/api/types.rs @@ -843,21 +843,21 @@ pub struct DiscordFileAttachment { content: Vec, } -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Serialize, Deserialize, Clone)] pub struct PartialDiscordFileAttachment { pub id: Option, pub filename: Option, - description: Option, - content_type: Option, - size: Option, - url: Option, - proxy_url: Option, - height: Option, - width: Option, - ephemeral: Option, - duration_secs: Option, - waveform: Option, + pub description: Option, + pub content_type: Option, + pub size: Option, + pub url: Option, + pub proxy_url: Option, + pub height: Option, + pub width: Option, + pub ephemeral: Option, + pub duration_secs: Option, + pub waveform: Option, #[serde(skip_serializing)] pub content: Vec, }