From e5b93c0bdda1e189aab6157858ee947ff344ebbe Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Mon, 13 Oct 2025 13:44:56 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(processor):=20use?= =?UTF-8?q?=20GmailClient=20instead=20of=20credential=5Ffile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - replace credential_file with GmailClient in Processor and ProcessorBuilder - update builder method to accept GmailClient - update trash_messages and delete_messages methods to use GmailClient --- src/processor.rs | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/processor.rs b/src/processor.rs index 382b48f..e378c4c 100644 --- a/src/processor.rs +++ b/src/processor.rs @@ -1,23 +1,43 @@ // use crate::EolRule; -use crate::{Delete, EolAction, Error, Result, Trash, config::EolRule}; +use std::fmt; + +use crate::{Delete, EolAction, Error, GmailClient, Result, Trash, config::EolRule}; /// Rule processor -#[derive(Debug)] +#[derive()] pub struct Processor<'a> { - credential_file: String, + client: GmailClient, rule: &'a EolRule, execute: bool, } +impl<'a> fmt::Debug for Processor<'a> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("Processor") + .field("rule", &self.rule) + .field("execute", &self.execute) + .finish() + } +} + /// Rule processor builder -#[derive(Debug)] +#[derive()] pub struct ProcessorBuilder<'a> { - credential_file: String, + client: GmailClient, rule: &'a EolRule, execute: bool, } +impl<'a> fmt::Debug for ProcessorBuilder<'a> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("ProcessorBuilder") + .field("rule", &self.rule) + .field("execute", &self.execute) + .finish() + } +} + impl<'a> ProcessorBuilder<'a> { /// Set the execute flag pub fn set_execute(&mut self, value: bool) -> &mut Self { @@ -28,7 +48,7 @@ impl<'a> ProcessorBuilder<'a> { /// Build the Processor pub fn build(&'_ self) -> Processor<'_> { Processor { - credential_file: self.credential_file.clone(), + client: self.client.clone(), rule: self.rule, execute: self.execute, } @@ -37,9 +57,9 @@ impl<'a> ProcessorBuilder<'a> { impl<'a> Processor<'a> { /// Initialise a new processor - pub fn builder(credential_file: &str, rule: &'a EolRule) -> ProcessorBuilder<'a> { + pub fn builder(client: GmailClient, rule: &'a EolRule) -> ProcessorBuilder<'a> { ProcessorBuilder { - credential_file: credential_file.to_string(), + client: client.clone(), rule, execute: false, } @@ -52,10 +72,10 @@ impl<'a> Processor<'a> { /// Trash the messages pub async fn trash_messages(&self, label: &str) -> Result<()> { - let mut messages_to_trash = Trash::new(&self.credential_file).await?; + let mut messages_to_trash = Trash::new(&self.client).await?; messages_to_trash .message_list() - .add_labels(&self.credential_file, &[label.to_string()]) + .add_labels(&self.client, &[label.to_string()]) .await?; if messages_to_trash.message_list().label_ids().is_empty() { @@ -81,11 +101,11 @@ impl<'a> Processor<'a> { /// Delete the messages pub async fn delete_messages(&self, label: &str) -> Result<()> { - let mut messages_to_delete = Delete::new(&self.credential_file).await?; + let mut messages_to_delete = Delete::new(&self.client).await?; messages_to_delete .message_list() - .add_labels(&self.credential_file, &[label.to_string()]) + .add_labels(&self.client, &[label.to_string()]) .await?; if messages_to_delete.message_list().label_ids().is_empty() {