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;
|
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
|
/// Jolie message d'erreur
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use chrono::prelude::*;
|
use chrono::prelude::*;
|
||||||
use mattermost_api::prelude::*;
|
use mattermost_api::prelude::*;
|
||||||
|
use serde_json::json;
|
||||||
|
|
||||||
/// Se connecte à Mattermost
|
/// Se connecte à Mattermost
|
||||||
pub async fn connexion(
|
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
|
/* 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
|
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)
|
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
|
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
|
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.
|
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
|
-> https://api.mattermost.com/#operation/DeleteCommand
|
||||||
|
|
||||||
- Les commandes font une requête, doit on faire tourner un serveur web en local ?
|
- Les commandes font une requête, doit on faire tourner un serveur web en local ?
|
||||||
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
Reference in a new issue