add a connection function to the mattermost websocket
This commit is contained in:
parent
71c3c5e477
commit
a6341f75e1
2 changed files with 39 additions and 4 deletions
|
@ -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
|
||||
|
|
|
@ -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 ?
|
||||
|
||||
|
||||
*/
|
||||
|
|
Reference in a new issue