start re-doing send()

This commit is contained in:
bitfl0wer 2023-05-05 21:53:23 +02:00
parent 9b5caf6392
commit e41563b101
1 changed files with 9 additions and 69 deletions

View File

@ -1,11 +1,6 @@
pub mod messages { pub mod messages {
use reqwest::{Client, Response};
use serde_json::to_string;
use std::io::Read;
use crate::api::limits::Limits; use crate::api::limits::Limits;
use crate::api::types::{DiscordFileAttachment, Message, User}; use crate::api::types::{Message, PartialDiscordFileAttachment, User};
use crate::errors::InstanceServerError;
use crate::limit::LimitedRequester; use crate::limit::LimitedRequester;
impl Message { impl Message {
@ -20,76 +15,21 @@ pub mod messages {
# Errors # Errors
* [`InstanceServerError`] - If the message cannot be sent. * [`InstanceServerError`] - If the message cannot be sent.
*/ */
pub async fn send(
url_api: &String,
token: &String,
message: &Message,
files: Option<Vec<DiscordFileAttachment>>,
limits_user: &mut Limits,
limits_instance: &mut Limits,
requester: &mut LimitedRequester,
) -> Result<Response, InstanceServerError> {
if files.is_some() {
return Self::send_with_attachments(
url_api,
token,
message,
files,
limits_user,
limits_instance,
requester,
);
}
let request = Client::new()
.post(format!(
"{}/channels/{}/messages",
url_api, message.channel_id
))
.body(to_string(message).unwrap())
.bearer_auth(token);
match requester
.send_request(
request,
crate::api::limits::LimitType::Channel,
limits_instance,
limits_user,
)
.await
{
Ok(result) => Ok(result),
Err(e) => Err(e),
}
}
fn send_with_attachments( pub async fn send<'a>(
url_api: &String, url_api: &String,
token: &String, message: &mut Message,
message: &Message, files: Option<Vec<PartialDiscordFileAttachment>>,
files: Option<Vec<DiscordFileAttachment>>, user: &mut User<'a>,
limits_user: &mut Limits,
limits_instance: &mut Limits, limits_instance: &mut Limits,
requester: &mut LimitedRequester, requester: &mut LimitedRequester,
) -> Result<Response, InstanceServerError> { ) {
let form = reqwest::multipart::Form::new(); let token = user.token();
let mut limits = &mut user.rate_limits;
} }
} }
impl<'a> User<'a> { impl<'a> User<'a> {
pub async fn send_message( pub async fn send_message() {}
&mut self,
message: &Message,
files: Option<Vec<DiscordFileAttachment>>,
) -> Result<Response, InstanceServerError> {
Message::send(
&self.belongs_to().urls.get_api().to_string(),
&self.token(),
message,
files,
self.rate_limits.get_as_mut(),
&mut self.belongs_to.limits.get_as_mut(),
&mut LimitedRequester::new().await,
)
.await
}
} }
} }