From 5c7fd055ec72cfcb0a24bb57fbcfccfe60f6d57d Mon Sep 17 00:00:00 2001 From: Mauro D Date: Sat, 20 May 2023 18:51:47 +0000 Subject: [PATCH] Update SieveScript to DRAFT-14. --- README.md | 2 +- src/core/session.rs | 2 ++ src/core/set.rs | 5 ++++- src/event_source/parser.rs | 2 -- src/sieve/helpers.rs | 2 +- src/sieve/mod.rs | 5 ++++- src/sieve/set.rs | 8 ++++---- 7 files changed, 16 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b1b6b24..2fa3a86 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ _jmap-client_ is a **JSON Meta Application Protocol (JMAP) library** written in - JMAP Core ([RFC 8620](https://datatracker.ietf.org/doc/html/rfc8620)) - JMAP for Mail ([RFC 8621](https://datatracker.ietf.org/doc/html/rfc8621)) - JMAP over WebSocket ([RFC 8887](https://datatracker.ietf.org/doc/html/rfc8887)). -- JMAP for Sieve Scripts ([DRAFT-SIEVE-12](https://www.ietf.org/archive/id/draft-ietf-jmap-sieve-12.html)). +- JMAP for Sieve Scripts ([DRAFT-SIEVE-14](https://www.ietf.org/archive/id/draft-ietf-jmap-sieve-14.html)). Features: diff --git a/src/core/session.rs b/src/core/session.rs index 916391d..c3f6613 100644 --- a/src/core/session.rs +++ b/src/core/session.rs @@ -110,6 +110,8 @@ pub struct WebSocketCapabilities { #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SieveCapabilities { + #[serde(rename = "implementation")] + implementation: Option, #[serde(rename = "maxSizeScriptName")] max_script_name: Option, #[serde(rename = "maxSizeScript")] diff --git a/src/core/set.rs b/src/core/set.rs index 4b032b3..d850b2b 100644 --- a/src/core/set.rs +++ b/src/core/set.rs @@ -430,7 +430,10 @@ impl Display for SetErrorType { } pub fn from_timestamp(timestamp: i64) -> DateTime { - DateTime::::from_utc(NaiveDateTime::from_timestamp(timestamp, 0), Utc) + DateTime::::from_utc( + NaiveDateTime::from_timestamp_opt(timestamp, 0).unwrap_or_default(), + Utc, + ) } pub fn string_not_set(string: &Option) -> bool { diff --git a/src/event_source/parser.rs b/src/event_source/parser.rs index 9f751fc..d65e663 100644 --- a/src/event_source/parser.rs +++ b/src/event_source/parser.rs @@ -96,8 +96,6 @@ impl EventParser { id, .. }) => { - #[cfg(feature = "debug")] - use std::iter::FromIterator; #[cfg(feature = "debug")] return Some(Ok(Changes { id: if !id.is_empty() { diff --git a/src/sieve/helpers.rs b/src/sieve/helpers.rs index c134647..b4a8ac5 100644 --- a/src/sieve/helpers.rs +++ b/src/sieve/helpers.rs @@ -112,7 +112,7 @@ impl Client { request .set_sieve_script() .arguments() - .on_success_deactivate_scripts(); + .on_success_deactivate_script(true); request .send_single::() .await? diff --git a/src/sieve/mod.rs b/src/sieve/mod.rs index dc07631..84520a4 100644 --- a/src/sieve/mod.rs +++ b/src/sieve/mod.rs @@ -52,7 +52,10 @@ pub struct SieveScript { pub struct SetArguments { #[serde(rename = "onSuccessActivateScript")] #[serde(skip_serializing_if = "Option::is_none")] - on_success_activate_script: Option>, + on_success_activate_script: Option, + #[serde(rename = "onSuccessDeactivateScript")] + #[serde(skip_serializing_if = "Option::is_none")] + on_success_deactivate_script: Option, } #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash, Copy)] diff --git a/src/sieve/set.rs b/src/sieve/set.rs index 4dacb6e..f5d7443 100644 --- a/src/sieve/set.rs +++ b/src/sieve/set.rs @@ -46,17 +46,17 @@ impl SetObject for SieveScript { impl SetArguments { pub fn on_success_activate_script(&mut self, id: impl Into) -> &mut Self { - self.on_success_activate_script = Some(Some(format!("#{}", id.into()))); + self.on_success_activate_script = Some(format!("#{}", id.into())); self } pub fn on_success_activate_script_id(&mut self, id: impl Into) -> &mut Self { - self.on_success_activate_script = Some(Some(id.into())); + self.on_success_activate_script = Some(id.into()); self } - pub fn on_success_deactivate_scripts(&mut self) -> &mut Self { - self.on_success_activate_script = Some(None); + pub fn on_success_deactivate_script(&mut self, value: bool) -> &mut Self { + self.on_success_deactivate_script = Some(value); self } }