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");
}
/* 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`
pub struct IdentifiantsMattermost {
pub token: String,
@ -26,7 +30,6 @@ pub struct IdentifiantsMattermost {
pub struct ConnectionInfoDiscord {
pub token: String,
pub prefix: String,
pub api: mattermost_api::client::Mattermost,
pub salon: String,
}

View file

@ -34,17 +34,17 @@ async fn main() {
"{}",
erreur::message_erreur("Token discord non trouvé dans le fichier .env")
)
}); // récupération du token
});
// 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
let mut pseudo_ok = false;
match env::var("PSEUDO") {
match env::var("PSEUDO_MATTERMOST") {
Ok(string) => {
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 = string;
@ -53,17 +53,19 @@ async fn main() {
if !token_recuperer {
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
match env::var("MOT_DE_PASSE") {
match env::var("MDP_MATTERMOST") {
Ok(string) => {
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;
}
@ -72,74 +74,76 @@ async fn main() {
panic!(
"{}",
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!(
"{}",
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
if url.ends_with('/') {
// Si l'url finit par un '/'
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
let api = mattermost::connexion(&token_mattermost, &pseudo, &mot_de_passe, &url).await;
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")
)
});
// Récupération équipe
if let Ok(string) = env::var("EQUIPE_MATTERMOST") {
// On affiche les infos d'une team
mattermost::team_info(&api, &equipe).await;
// Tâche en parallèle
mattermost::start_mattermost(mattermost::ConnectionInfoWebsocket {
api,
token: token_mattermost.clone(), /* , prefix */
})
mattermost::team_info(
&mattermost::connexion(&token_mattermost, &pseudo, &mot_de_passe, &url).await,
&string,
)
.await;
}
/* On créer notre structure avec les identifiants Mattermost
* que notre fichier Discord à besoin pour envoyer des message
* 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
let salon = env::var("SALON_MATTERMOST").unwrap_or_else(|_| {
// Récupération du salon
panic!(
"{}",
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
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 {
token: token_discord,
prefix,
api: api_discord,
salon: mattermost::channel_id_by_name(&api2, salon).await,
salon: mattermost::channel_id_by_name(
&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;
}