Implement message sending (without attachments)
This commit is contained in:
parent
f067826889
commit
0e5a9caa44
|
@ -1,4 +1,7 @@
|
||||||
pub mod messages {
|
pub mod messages {
|
||||||
|
use reqwest::Client;
|
||||||
|
use serde_json::to_string;
|
||||||
|
|
||||||
use crate::api::limits::Limits;
|
use crate::api::limits::Limits;
|
||||||
use crate::api::types::{Message, PartialDiscordFileAttachment, User};
|
use crate::api::types::{Message, PartialDiscordFileAttachment, User};
|
||||||
use crate::limit::LimitedRequester;
|
use crate::limit::LimitedRequester;
|
||||||
|
@ -18,14 +21,35 @@ pub mod messages {
|
||||||
|
|
||||||
pub async fn send<'a>(
|
pub async fn send<'a>(
|
||||||
url_api: &String,
|
url_api: &String,
|
||||||
|
channel_id: &String,
|
||||||
message: &mut crate::api::schemas::MessageSendSchema,
|
message: &mut crate::api::schemas::MessageSendSchema,
|
||||||
files: Option<Vec<PartialDiscordFileAttachment>>,
|
files: Option<Vec<PartialDiscordFileAttachment>>,
|
||||||
token: &String,
|
token: &String,
|
||||||
user: &mut User<'a>,
|
user: &mut User<'a>,
|
||||||
requester: &mut LimitedRequester,
|
) -> Result<reqwest::Response, crate::errors::InstanceServerError> {
|
||||||
) {
|
let mut requester = LimitedRequester::new().await;
|
||||||
let user_limits = &mut user.limits;
|
let user_rate_limits = &mut user.limits;
|
||||||
let instance_limits = &mut user.belongs_to.limits;
|
let instance_rate_limits = &mut user.belongs_to.limits;
|
||||||
|
|
||||||
|
if files.is_none() {
|
||||||
|
let message_request = Client::new()
|
||||||
|
.post(format!("{}/channels/{}/messages/", url_api, channel_id))
|
||||||
|
.bearer_auth(token)
|
||||||
|
.body(to_string(message).unwrap());
|
||||||
|
requester
|
||||||
|
.send_request(
|
||||||
|
message_request,
|
||||||
|
crate::api::limits::LimitType::Channel,
|
||||||
|
instance_rate_limits,
|
||||||
|
user_rate_limits,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
} else {
|
||||||
|
return Err(crate::errors::InstanceServerError::InvalidFormBodyError {
|
||||||
|
error_type: "Not implemented".to_string(),
|
||||||
|
error: "Not implemented".to_string(),
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,18 +57,78 @@ pub mod messages {
|
||||||
pub async fn send_message(
|
pub async fn send_message(
|
||||||
&mut self,
|
&mut self,
|
||||||
mut message: &mut crate::api::schemas::MessageSendSchema,
|
mut message: &mut crate::api::schemas::MessageSendSchema,
|
||||||
|
channel_id: &String,
|
||||||
files: Option<Vec<PartialDiscordFileAttachment>>,
|
files: Option<Vec<PartialDiscordFileAttachment>>,
|
||||||
) {
|
) -> Result<reqwest::Response, crate::errors::InstanceServerError> {
|
||||||
let token = self.token().clone();
|
let token = self.token().clone();
|
||||||
Message::send(
|
Message::send(
|
||||||
&self.belongs_to.urls.get_api().to_string(),
|
&self.belongs_to.urls.get_api().to_string(),
|
||||||
|
channel_id,
|
||||||
&mut message,
|
&mut message,
|
||||||
files,
|
files,
|
||||||
&token,
|
&token,
|
||||||
self,
|
self,
|
||||||
&mut LimitedRequester::new().await,
|
|
||||||
)
|
)
|
||||||
.await;
|
.await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use crate::{
|
||||||
|
api::{AuthUsername, LoginSchema, MessageSendSchema, UserObject},
|
||||||
|
instance::Instance,
|
||||||
|
limit::LimitedRequester,
|
||||||
|
};
|
||||||
|
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn send_message() {
|
||||||
|
let channel_id = "1104413094102290492".to_string();
|
||||||
|
let mut message = crate::api::schemas::MessageSendSchema::new(
|
||||||
|
None,
|
||||||
|
Some("ashjkdhjksdfgjsdfzjkhsdvhjksdf".to_string()),
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
);
|
||||||
|
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(true, &mut instance, token, limits, settings, None);
|
||||||
|
let response = user
|
||||||
|
.send_message(&mut message, &channel_id, None)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
println!("{:?}", response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue