add a connection function to the mattermost websocket

This commit is contained in:
Mylloon 2022-01-03 19:38:59 +01:00
parent 71c3c5e477
commit a6341f75e1
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
2 changed files with 39 additions and 4 deletions

View file

@ -81,6 +81,15 @@ async fn main() {
)
});
mattermost::team_info(&api, &equipe).await;
match mattermost::connect_websocket(&api, &token).await {
Ok(res) => {
println!("{}", res);
}
Err(e) => {
println!("Error: {}", e);
}
}
}
/// Jolie message d'erreur

View file

@ -1,5 +1,6 @@
use chrono::prelude::*;
use mattermost_api::prelude::*;
use serde_json::json;
/// Se connecte à Mattermost
pub async fn connexion(
@ -101,14 +102,41 @@ pub async fn team_info(api: &mattermost_api::client::Mattermost, equipe: &str) {
}
}
/// Se connecte au websocket
///
/// Malheureusement, reçois systématiquement une erreur 400, une erreur de token ?
pub async fn connect_websocket(
api: &mattermost_api::client::Mattermost,
token: &str,
) -> Result<String, ApiError> {
api.query::<String>(
"GET",
"websocket",
None,
Some(
&json!(
{
"seq": 1,
"action": "authentication_challenge",
"data": {
"token": &token
}
}
)
.to_string(),
),
)
.await
}
/* TODO
!! Réflexion 1 -> Websocket https://api.mattermost.com/#tag/WebSocket
Malheureusement, aucune réponse sur une possible date de sortie du support du websocket
dans la librarie que j'utilises (mon issue : https://github.com/Celeo/mattermost_api/issues/1)
Cependant je pense que c'est quand même prévu à l'avenir : https://github.com/Celeo/mattermost_api/blob/master/src/client.rs#L185
En attendant, utiliser un websocket rend tout plus simple, on récupère tout les evenements qu'on recois, on traite les messages
et si un utilisateur demande une commande on envoie un message en réponse.
En attendant, utiliser un websocket rend tout plus simple, on récupère tout les evenements qu'on reçois, on traite les messages
et si un utilisateur demande une commande on envoie un message en réponse (en théorie).
-------------
@ -123,6 +151,4 @@ pub async fn team_info(api: &mattermost_api::client::Mattermost, equipe: &str) {
-> https://api.mattermost.com/#operation/DeleteCommand
- Les commandes font une requête, doit on faire tourner un serveur web en local ?
*/