Cleanup code
This commit is contained in:
parent
9953b30b83
commit
cb4042eb58
3 changed files with 55 additions and 48 deletions
|
@ -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,
|
||||
}
|
||||
|
||||
|
|
96
src/main.rs
96
src/main.rs
|
@ -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(
|
||||
&mattermost::connexion(&token_mattermost, &pseudo, &mot_de_passe, &url).await,
|
||||
&string,
|
||||
)
|
||||
});
|
||||
.await;
|
||||
}
|
||||
|
||||
// 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 */
|
||||
})
|
||||
.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 où 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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
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
|
||||
|
||||
-------------
|
||||
|
||||
|
|
Reference in a new issue