From 6ba563dacf16fde5b13997fa1a25f41b5df74f87 Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Fri, 10 Oct 2025 14:42:42 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(processor):=20implement=20rule?= =?UTF-8?q?=20processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - implements struct `Processor` to manage rules for trashing messages - adds method `trash_messages` to list and trash messages with labels and queries --- src/processor.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/processor.rs diff --git a/src/processor.rs b/src/processor.rs new file mode 100644 index 0000000..9033826 --- /dev/null +++ b/src/processor.rs @@ -0,0 +1,34 @@ +// use crate::EolRule; + +use crate::{Result, Trash, config::EolRule}; + +/// Rule processor +#[derive(Debug)] +pub struct Processor { + credential_file: String, + rule: EolRule, +} + +impl Processor { + fn new(credential_file: String, rule: EolRule) -> Self { + Processor { + credential_file, + rule, + } + } + + async fn trash_messages(&self, label: &str) -> Result<()> { + let mut messages_to_trash = Trash::new(&self.credential_file).await?; + + messages_to_trash + .message_list() + .add_labels(&self.credential_file, &[label.to_string()]) + .await?; + + messages_to_trash + .message_list() + .set_query(&self.rule.eol_query()); + + messages_to_trash.run(0).await + } +}