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");
|
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,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
94
src/main.rs
94
src/main.rs
|
@ -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 où 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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
Reference in a new issue