Add
- Channel Structure - API Endpoint of the list of available channels - Function who return the correct ID of the channel filled in the .env file
This commit is contained in:
parent
67a668dfb4
commit
52872ffebf
1 changed files with 68 additions and 0 deletions
|
@ -1,5 +1,6 @@
|
||||||
use chrono::prelude::*;
|
use chrono::prelude::*;
|
||||||
use mattermost_api::prelude::*;
|
use mattermost_api::prelude::*;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
|
|
||||||
mod erreur {
|
mod erreur {
|
||||||
|
@ -106,6 +107,73 @@ impl Affichage for mattermost_api::models::TeamInformation {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Response struct from /channels
|
||||||
|
///
|
||||||
|
/// Pour savoir ce qu'il faut mettre ici, il faut check la documentation
|
||||||
|
/// https://api.mattermost.com/#operation/GetAllChannels
|
||||||
|
/// et bien faire attention aux valeurs qui peuvent être null
|
||||||
|
/// -> on peut le savoir en regardant le détail de ce qui est envoyé à Mattermost
|
||||||
|
/// ex ici, il faut cliquer sur : 200 Channel list retrieval successful
|
||||||
|
/// pour accéder à la liste déroulante :)
|
||||||
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
|
pub struct ChannelInformation {
|
||||||
|
pub id: String,
|
||||||
|
pub create_at: i64,
|
||||||
|
pub update_at: i64,
|
||||||
|
pub delete_at: i64,
|
||||||
|
pub team_id: String,
|
||||||
|
#[serde(rename = "type")]
|
||||||
|
pub type_: String,
|
||||||
|
pub display_name: String,
|
||||||
|
pub name: String,
|
||||||
|
pub header: String,
|
||||||
|
pub purpose: String,
|
||||||
|
pub last_post_at: i64,
|
||||||
|
pub total_msg_count: i64,
|
||||||
|
pub extra_update_at: i64,
|
||||||
|
pub creator_id: String,
|
||||||
|
pub team_display_name: String,
|
||||||
|
pub team_name: String,
|
||||||
|
pub team_update_at: i64,
|
||||||
|
pub policy_id: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Récupère la liste de tous les salons disponibles
|
||||||
|
pub async fn get_channel_info(
|
||||||
|
api: &mattermost_api::client::Mattermost,
|
||||||
|
) -> Result<Vec<ChannelInformation>, ApiError> {
|
||||||
|
api.query("GET", "channels", None, None).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Récupère l'ID du salon renseigné grâce à son nom en faisant une requête à l'API de Mattermost
|
||||||
|
#[allow(dead_code)] // je comprends pas pourquoi j'ai besoin de mettre ça, parce que j'utilises le code en dessous...
|
||||||
|
pub async fn channel_id_by_name(api: &mattermost_api::client::Mattermost, salon: String) -> String {
|
||||||
|
println!("\nTentative de récupération de l'équipe {}...", salon);
|
||||||
|
match get_channel_info(api).await {
|
||||||
|
Ok(channels) => {
|
||||||
|
for channel in &channels {
|
||||||
|
if &channel.name == &salon {
|
||||||
|
return channel.id.clone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
panic!(
|
||||||
|
"{}",
|
||||||
|
erreur::message_erreur("Impossible de récupérer l'ID du salon renseigné: Pas présent dans la liste récupérée")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Err(err) => {
|
||||||
|
panic!(
|
||||||
|
"{}",
|
||||||
|
erreur::message_erreur(&format!(
|
||||||
|
"Impossible de récupérer l'ID du salon renseigné: {}",
|
||||||
|
err
|
||||||
|
))
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Affiche les informations complète sur une équipe
|
/// Affiche les informations complète sur une équipe
|
||||||
#[allow(dead_code)] // je comprends pas pourquoi j'ai besoin de mettre ça, parce que j'utilises le code en dessous...
|
#[allow(dead_code)] // je comprends pas pourquoi j'ai besoin de mettre ça, parce que j'utilises le code en dessous...
|
||||||
pub async fn team_info(api: &mattermost_api::client::Mattermost, equipe: &str) {
|
pub async fn team_info(api: &mattermost_api::client::Mattermost, equipe: &str) {
|
||||||
|
|
Reference in a new issue