From 43275d1fd96777def41ee599d33fe701256343ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= <72651575+BreizhHardware@users.noreply.github.com> Date: Sat, 14 Jun 2025 11:45:13 +0200 Subject: [PATCH] refactor(github): enhance error handling and add User-Agent header in get_latest_releases function --- src/github.rs | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/github.rs b/src/github.rs index 77aa2b3..6d576d2 100644 --- a/src/github.rs +++ b/src/github.rs @@ -1,16 +1,26 @@ -use log::error; +use log::{error, info}; use reqwest::header::HeaderMap; use crate::models::{GithubRelease, GithubReleaseInfo}; pub async fn get_latest_releases( repos: &[String], client: &reqwest::Client, - headers: HeaderMap, + mut headers: HeaderMap ) -> Vec { let mut releases = Vec::new(); + if !headers.contains_key("User-Agent") { + headers.insert("User-Agent", "github-ntfy/1.0".parse().unwrap()); + } + + let has_auth = headers.contains_key("Authorization"); + if !has_auth { + info!("Aucun token GitHub configuré, les requêtes seront limitées"); + } + for repo in repos { let url = format!("https://api.github.com/repos/{}/releases/latest", repo); + match client.get(&url).headers(headers.clone()).send().await { Ok(response) => { if response.status().is_success() { @@ -27,11 +37,14 @@ pub async fn get_latest_releases( }); } } else { - error!("Error fetching GitHub release for {}: {}", repo, response.status()); + let status = response.status(); + let body = response.text().await.unwrap_or_default(); + error!("Erreur lors de la récupération de la release GitHub pour {}: {} - {}", + repo, status, body); } - } + }, Err(e) => { - error!("Error fetching GitHub release for {}: {}", repo, e); + error!("Erreur de connexion pour {}: {}", repo, e); } } }