diff --git a/src/check.rs b/src/check.rs index fc02112..2f67c50 100644 --- a/src/check.rs +++ b/src/check.rs @@ -17,7 +17,7 @@ async fn get_remote_updates(ctx: &Context, client: &Client, refresh: bool) -> Ve let handles: Vec<_> = ctx.config.servers .iter() - .map(|(name, url)| async { + .map(|(name, url)| async move { let base_url = if url.starts_with("http://") || url.starts_with("https://") { format!("{}/api/v3/", url.trim_end_matches('/')) } else { @@ -47,16 +47,21 @@ async fn get_remote_updates(ctx: &Context, client: &Client, refresh: bool) -> Ve return Vec::new(); } let json = parse_json(&get_response_body(response).await); + ctx.logger.debug(format!("JSON response for {}: {}", name, json)); if let Some(updates) = json["images"].as_array() { let mut server_updates: Vec = updates .iter() - .filter_map(|img| serde_json::from_value(img.clone()).ok()) + .filter_map(|img| match serde_json::from_value(img.clone()) { + Ok(o) => o, + Err(e) => {dbg!(e);None} + }) .collect(); // Add server origin to each image for update in &mut server_updates { update.server = Some(name.clone()); update.status = update.get_status(); } + ctx.logger.debug(format!("Updates for {}: {:#?}", name, server_updates)); return server_updates; } diff --git a/src/structs/status.rs b/src/structs/status.rs index f5e81e0..959f0e0 100644 --- a/src/structs/status.rs +++ b/src/structs/status.rs @@ -1,8 +1,7 @@ use std::fmt::Display; /// Enum for image status -#[derive(Ord, Eq, PartialEq, PartialOrd, Clone)] -#[cfg_attr(test, derive(Debug))] +#[derive(Ord, Eq, PartialEq, PartialOrd, Clone, Debug)] pub enum Status { UpdateMajor, UpdateMinor, diff --git a/src/structs/update.rs b/src/structs/update.rs index cc70621..21922a5 100644 --- a/src/structs/update.rs +++ b/src/structs/update.rs @@ -2,8 +2,8 @@ use serde::{ser::SerializeStruct, Deserialize, Serialize}; use super::{parts::Parts, status::Status}; -#[derive(Serialize, Deserialize, Clone)] -#[cfg_attr(test, derive(PartialEq, Debug, Default))] +#[derive(Serialize, Deserialize, Clone, Debug)] +#[cfg_attr(test, derive(PartialEq, Default))] pub struct Update { pub reference: String, pub parts: Parts, @@ -14,16 +14,16 @@ pub struct Update { pub status: Status, } -#[derive(Serialize, Deserialize, Clone)] -#[cfg_attr(test, derive(PartialEq, Debug, Default))] +#[derive(Serialize, Deserialize, Clone, Debug)] +#[cfg_attr(test, derive(PartialEq, Default))] pub struct UpdateResult { pub has_update: Option, pub info: UpdateInfo, pub error: Option, } -#[derive(Serialize, Deserialize, Clone)] -#[cfg_attr(test, derive(PartialEq, Debug, Default))] +#[derive(Serialize, Deserialize, Clone, Debug)] +#[cfg_attr(test, derive(PartialEq, Default))] #[serde(untagged)] pub enum UpdateInfo { #[cfg_attr(test, default)] @@ -32,8 +32,8 @@ pub enum UpdateInfo { Digest(DigestUpdateInfo), } -#[derive(Deserialize, Clone)] -#[cfg_attr(test, derive(PartialEq, Debug))] +#[derive(Deserialize, Clone, Debug)] +#[cfg_attr(test, derive(PartialEq))] pub struct VersionUpdateInfo { pub version_update_type: String, pub new_tag: String, @@ -41,8 +41,8 @@ pub struct VersionUpdateInfo { pub new_version: String, } -#[derive(Deserialize, Clone)] -#[cfg_attr(test, derive(PartialEq, Debug))] +#[derive(Deserialize, Clone, Debug)] +#[cfg_attr(test, derive(PartialEq))] pub struct DigestUpdateInfo { pub local_digests: Vec, pub remote_digest: Option, @@ -53,10 +53,12 @@ impl Serialize for VersionUpdateInfo { where S: serde::Serializer, { - let mut state = serializer.serialize_struct("VersionUpdateInfo", 3)?; + let mut state = serializer.serialize_struct("VersionUpdateInfo", 5)?; let _ = state.serialize_field("type", "version"); let _ = state.serialize_field("version_update_type", &self.version_update_type); let _ = state.serialize_field("new_tag", &self.new_tag); + let _ = state.serialize_field("current_version", &self.current_version); + let _ = state.serialize_field("new_version", &self.new_version); state.end() } }