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;
} }