Changes
- Better errors message - Add function to connect to mattermost
This commit is contained in:
parent
97060193b0
commit
76f3babd53
1 changed files with 40 additions and 6 deletions
|
@ -2,6 +2,21 @@ use chrono::prelude::*;
|
|||
use mattermost_api::prelude::*;
|
||||
use serde_json::json;
|
||||
|
||||
mod erreur {
|
||||
include!("erreur.rs");
|
||||
}
|
||||
|
||||
/// Permet de stocker les informations nécessaire pour utiliser le websocket
|
||||
pub struct ConnectionInfoWebsocket {
|
||||
/// API du client Mattermost
|
||||
pub api: mattermost_api::client::Mattermost,
|
||||
|
||||
/// Token utilisé
|
||||
pub token: String,
|
||||
/* /// Prefix utilisé
|
||||
pub prefix: String */
|
||||
}
|
||||
|
||||
/// Se connecte à Mattermost
|
||||
pub async fn connexion(
|
||||
token: &str,
|
||||
|
@ -23,6 +38,7 @@ pub async fn connexion(
|
|||
api
|
||||
}
|
||||
|
||||
/// Permet d'afficher un contenu proprement
|
||||
trait Affichage {
|
||||
/// Renvoie un affichage "propre" concernant l'équipe
|
||||
fn fprint(self) -> String;
|
||||
|
@ -92,19 +108,18 @@ impl Affichage for mattermost_api::models::TeamInformation {
|
|||
|
||||
/// Affiche les informations complète sur une équipe
|
||||
pub async fn team_info(api: &mattermost_api::client::Mattermost, equipe: &str) {
|
||||
println!("\nTentative de récupération de l'équipe {}...", equipe);
|
||||
match api.get_team_info(equipe).await {
|
||||
Ok(infos) => {
|
||||
println!("{}", infos.fprint());
|
||||
}
|
||||
Err(e) => {
|
||||
println!("Error: {}", e);
|
||||
println!("[Display Team Info] {}", erreur::message_erreur(&format!("Error: {}", e)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 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,
|
||||
|
@ -114,7 +129,7 @@ pub async fn connect_websocket(
|
|||
"websocket",
|
||||
None,
|
||||
Some(
|
||||
&json!(
|
||||
&json!( // d'après la documentation : https://api.mattermost.com/#tag/WebSocket
|
||||
{
|
||||
"seq": 1,
|
||||
"action": "authentication_challenge",
|
||||
|
@ -129,8 +144,25 @@ pub async fn connect_websocket(
|
|||
.await
|
||||
}
|
||||
|
||||
/// Lance le bot Mattermost
|
||||
pub async fn start_mattermost(connection: ConnectionInfoWebsocket) {
|
||||
match connect_websocket(&connection.api, &connection.token).await {
|
||||
Ok(res) => {
|
||||
/* Pour l'instant ici on a reçois un string donc on l'affiche (Result<String, ApiError>) mais
|
||||
* à l'avenir normalement ici on bloque le thread principale (ou on laisse
|
||||
* le bot discord le bloqué et ici ça s'execute en parallèle au bot discord)
|
||||
* et on récupère toutes les informations dont on a besoin, c'est à dire les
|
||||
* messages envoyés. */
|
||||
println!("{}", res);
|
||||
}
|
||||
Err(e) => {
|
||||
println!("[Websocket] {}", erreur::message_erreur(&format!("Error: {}", e)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* TODO
|
||||
!! Réflexion 1 -> Websocket https://api.mattermost.com/#tag/WebSocket
|
||||
!! 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
|
||||
|
@ -138,9 +170,11 @@ pub async fn connect_websocket(
|
|||
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).
|
||||
|
||||
-> Appel de la connexion au websocket donne une erreur HTTP400 malheureusement
|
||||
|
||||
-------------
|
||||
|
||||
!! Réflexion 2 -> pas de websocket, on utilise des commandes
|
||||
!! Réflexion 2 : pas de websocket, on utilise des commandes
|
||||
|
||||
- Faire une fonction qui récupère la liste des commandes
|
||||
-> https://api.mattermost.com/#operation/ListCommands
|
||||
|
|
Reference in a new issue