Cleanup code

This commit is contained in:
Mylloon 2022-01-06 19:21:06 +01:00
parent 9953b30b83
commit cb4042eb58
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
3 changed files with 55 additions and 48 deletions

View file

@ -14,6 +14,10 @@ mod mattermost {
include!("mattermost.rs"); include!("mattermost.rs");
} }
/* J'ai séparer les deux structures publiques pour que ce soit
* plus clair et lisible, ensuite je réunies toutes les informations
* dans une structure privé du fichier */
/// Identifiants pour Mattermost, récupérer une fois dans `main.rs` /// Identifiants pour Mattermost, récupérer une fois dans `main.rs`
pub struct IdentifiantsMattermost { pub struct IdentifiantsMattermost {
pub token: String, pub token: String,
@ -26,7 +30,6 @@ pub struct IdentifiantsMattermost {
pub struct ConnectionInfoDiscord { pub struct ConnectionInfoDiscord {
pub token: String, pub token: String,
pub prefix: String, pub prefix: String,
pub api: mattermost_api::client::Mattermost,
pub salon: String, pub salon: String,
} }

View file

@ -34,17 +34,17 @@ async fn main() {
"{}", "{}",
erreur::message_erreur("Token discord non trouvé dans le fichier .env") erreur::message_erreur("Token discord non trouvé dans le fichier .env")
) )
}); // récupération du token });
// Récupération du prefix // Récupération du prefix
let prefix = env::var("PREFIX").unwrap_or_else(|_| String::from("ç")); // récupération du prefix let prefix = env::var("PREFIX").unwrap_or_else(|_| String::from("ç")); // récupération du prefix
// Récupération du pseudo // Récupération du pseudo
let mut pseudo_ok = false; let mut pseudo_ok = false;
match env::var("PSEUDO") { match env::var("PSEUDO_MATTERMOST") {
Ok(string) => { Ok(string) => {
if token_recuperer { if token_recuperer {
panic!("{}", erreur::message_erreur("Tu as déjà choisie un token, vous ne pouvez pas aussi avoir définit un pseudo.")); panic!("{}", erreur::message_erreur("Tu as déjà choisie un token pour Mattermost, vous ne pouvez pas aussi avoir définit un pseudo."));
} }
pseudo_ok = true; pseudo_ok = true;
pseudo = string; pseudo = string;
@ -53,17 +53,19 @@ async fn main() {
if !token_recuperer { if !token_recuperer {
panic!( panic!(
"{}", "{}",
erreur::message_erreur("Aucun token ni pseudo trouvé dans le fichier .env") erreur::message_erreur(
"Aucun token ni pseudo trouvé dans le fichier .env pour Mattermost"
)
); );
} }
} }
} }
// Récupération du mot de passe // Récupération du mot de passe
match env::var("MOT_DE_PASSE") { match env::var("MDP_MATTERMOST") {
Ok(string) => { Ok(string) => {
if token_recuperer { if token_recuperer {
panic!("{}", erreur::message_erreur("Tu as déjà choisie un token, vous ne pouvez pas aussi avoir définit un mot de passe.")); panic!("{}", erreur::message_erreur("Tu as déjà choisie un token pour Mattermost, vous ne pouvez pas aussi avoir définit un mot de passe."));
} }
mot_de_passe = string; mot_de_passe = string;
} }
@ -72,74 +74,76 @@ async fn main() {
panic!( panic!(
"{}", "{}",
erreur::message_erreur( erreur::message_erreur(
"Tu as renseigner un pseudo mais pas de mot de passe dans le fichier .env" "Tu as renseigner un pseudo pour Mattermost mais pas de mot de passe dans le fichier .env"
) )
); );
} }
} }
} }
let mut url = env::var("URL").unwrap_or_else(|_| { let mut url = env::var("URL_MATTERMOST").unwrap_or_else(|_| {
panic!( panic!(
"{}", "{}",
erreur::message_erreur("URL non trouvé dans le fichier .env") erreur::message_erreur("URL de l'instance Mattermost non trouvé dans le fichier .env")
) )
}); // récupération de l'url }); // récupération de l'url
if url.ends_with('/') { if url.ends_with('/') {
// Si l'url finit par un '/' // Si l'url finit par un '/'
url = url[0..url.len() - 1].to_string(); // on retire le / url = url[0..url.len() - 1].to_string(); // on retire le /
} }
if !url.starts_with("http://") && !url.starts_with("https://") {
// Si l'url commence pas par 'http(s)'
url = format!("http://{}", url); // on ajoute http
}
// on s'embête pas, on créer plusieurs jeu d'API utilisé par mattermost parce que elle n'implémente pas la Copy // Récupération équipe
let api = mattermost::connexion(&token_mattermost, &pseudo, &mot_de_passe, &url).await; if let Ok(string) = env::var("EQUIPE_MATTERMOST") {
let api2 = mattermost::connexion(&token_mattermost, &pseudo, &mot_de_passe, &url).await;
let api_discord = mattermost::connexion(&token_mattermost, &pseudo, &mot_de_passe, &url).await; // api utilisé par discord pour mattermost
let equipe = env::var("EQUIPE").unwrap_or_else(|_| {
// Récupération de l'équipe
panic!(
"{}",
erreur::message_erreur("Équipe non trouvé dans le fichier .env")
)
});
// On affiche les infos d'une team // On affiche les infos d'une team
mattermost::team_info(&api, &equipe).await; mattermost::team_info(
&mattermost::connexion(&token_mattermost, &pseudo, &mot_de_passe, &url).await,
// Tâche en parallèle &string,
mattermost::start_mattermost(mattermost::ConnectionInfoWebsocket { )
api,
token: token_mattermost.clone(), /* , prefix */
})
.await; .await;
}
/* On créer notre structure avec les identifiants Mattermost let salon = env::var("SALON_MATTERMOST").unwrap_or_else(|_| {
* que notre fichier Discord à besoin pour envoyer des message // Récupération du salon
* sur Mattermost. */
let id = discord::IdentifiantsMattermost {
token: token_mattermost,
user: pseudo,
pass: mot_de_passe,
url,
};
let salon = env::var("SALON").unwrap_or_else(|_| {
// Récupération de l'équipe
panic!( panic!(
"{}", "{}",
erreur::message_erreur("Salon non trouvé dans le fichier .env") erreur::message_erreur("Salon non trouvé dans le fichier .env")
) )
}); });
/* Désactiver car websocket marche pas (erreur HTTP 400)
// Tâche en parallèle
mattermost::start_mattermost(mattermost::ConnectionInfoWebsocket {
api: mattermost::connexion(&token_mattermost, &pseudo, &mot_de_passe, &url).await,
token: token_mattermost.clone(),
})
.await; */
// Bloque le thread principale en quelque sorte // Bloque le thread principale en quelque sorte
discord::start_discord( discord::start_discord(
/* On instancie notre structure avec les identifiants Discord
* pour pouvoir s'y connecter, avec un salon Mattermost les
* messages seront envoyés. */
discord::ConnectionInfoDiscord { discord::ConnectionInfoDiscord {
token: token_discord, token: token_discord,
prefix, prefix,
api: api_discord, salon: mattermost::channel_id_by_name(
salon: mattermost::channel_id_by_name(&api2, salon).await, &mattermost::connexion(&token_mattermost, &pseudo, &mot_de_passe, &url).await,
salon,
)
.await, // récupération ID du salon
},
/* On instancie notre structure avec les identifiants Mattermost
* que notre fichier Discord à besoin pour envoyer des message
* sur Mattermost. */
discord::IdentifiantsMattermost {
token: token_mattermost,
user: pseudo,
pass: mot_de_passe,
url,
}, },
id,
) )
.await; .await;
} }

View file

@ -240,7 +240,7 @@ pub async fn start_mattermost(connection: ConnectionInfoWebsocket) {
En attendant, utiliser un websocket rend tout plus simple, on récupère tout les événements qu'on reçoit, on traite les messages En attendant, utiliser un websocket rend tout plus simple, on récupère tout les événements qu'on reçoit, on traite les messages
et si un utilisateur demande une commande on envoie un message en réponse (en théorie). 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 -> Appel de la connexion au websocket donne une erreur HTTP 400 malheureusement
------------- -------------