From b450db0bfa5d5ff27d9c71b42eac55001f2f8fff Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Fri, 3 Oct 2025 16:38:06 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(labels):=20simpli?= =?UTF-8?q?fy=20labels=20struct=20initialization?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - remove get_labels method and integrate its logic into new - remove log_label_names method and move logging to new - initialize label_list and label_map directly in new --- src/labels.rs | 50 +++++++++++++++++++++----------------------------- 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/src/labels.rs b/src/labels.rs index e5e45c9..8f2ba22 100644 --- a/src/labels.rs +++ b/src/labels.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use google_gmail1::{ Gmail, - api::{Label, ListLabelsResponse}, + api::Label, hyper_rustls::{HttpsConnector, HttpsConnectorBuilder}, hyper_util::{ client::legacy::{Client, connect::HttpConnector}, @@ -62,36 +62,11 @@ impl Labels { .await .unwrap(); - Ok(Labels { - hub: Gmail::new(client, auth), - label_list: Vec::new(), - label_map: HashMap::new(), - }) - } + let hub = Gmail::new(client, auth); - /// Get the labels for the authorised account - pub async fn get_labels(&mut self) -> Result<(), Error> { - let call = self.hub.users().labels_list("me"); + let call = hub.users().labels_list("me"); let (_response, list) = call.doit().await.map_err(Box::new)?; - self.log_label_names(&list).await?; - - if let Some(labels) = list.labels { - let mut label_map = HashMap::new(); - for label in &labels { - if label.id.is_some() && label.name.is_some() { - let label = label.clone(); - label_map.insert(label.name.unwrap(), label.id.unwrap()); - } - } - self.label_list = labels; - self.label_map = label_map; - } - - Ok(()) - } - - async fn log_label_names(&self, list: &ListLabelsResponse) -> Result<(), Error> { if let Some(labels) = &list.labels { for label in labels { if let Some(name) = &label.name { @@ -102,7 +77,24 @@ impl Labels { } } - Ok(()) + let (label_list, label_map) = if let Some(labels) = list.labels { + let mut label_map = HashMap::new(); + for label in &labels { + if label.id.is_some() && label.name.is_some() { + let label = label.clone(); + label_map.insert(label.name.unwrap(), label.id.unwrap()); + } + } + (labels, label_map) + } else { + (Vec::new(), HashMap::new()) + }; + + Ok(Labels { + hub, + label_list, + label_map, + }) } /// Return the id for the name from the labels map.