summaryrefslogtreecommitdiff
path: root/crates/imap-proto
diff options
context:
space:
mode:
authorMauro D <mauro@stalw.art>2023-06-22 17:29:39 +0000
committerMauro D <mauro@stalw.art>2023-06-22 17:29:39 +0000
commite1c3190b486f3e89c33bbaeb6f26693fcc197a15 (patch)
treea46b49a3f6a5dacd2898e55564ed6318376e7922 /crates/imap-proto
parent5fda55064296f1d4e09169f9c886fd2e6d1ae2a6 (diff)
IMAP mailbox synchronization
Diffstat (limited to 'crates/imap-proto')
-rw-r--r--crates/imap-proto/Cargo.toml1
-rw-r--r--crates/imap-proto/src/lib.rs11
-rw-r--r--crates/imap-proto/src/protocol/status.rs2
3 files changed, 11 insertions, 3 deletions
diff --git a/crates/imap-proto/Cargo.toml b/crates/imap-proto/Cargo.toml
index c12d6347..faa16d59 100644
--- a/crates/imap-proto/Cargo.toml
+++ b/crates/imap-proto/Cargo.toml
@@ -5,6 +5,7 @@ edition = "2021"
resolver = "2"
[dependencies]
+jmap_proto = { path = "../jmap-proto" }
mail-parser = { git = "https://github.com/stalwartlabs/mail-parser", features = ["full_encoding", "serde_support", "ludicrous_mode"] }
ahash = { version = "0.8" }
chrono = { version = "0.4"}
diff --git a/crates/imap-proto/src/lib.rs b/crates/imap-proto/src/lib.rs
index 44d8026e..de46327a 100644
--- a/crates/imap-proto/src/lib.rs
+++ b/crates/imap-proto/src/lib.rs
@@ -1,5 +1,6 @@
use std::borrow::Cow;
+use jmap_proto::error::method::MethodError;
use protocol::capability::Capability;
pub mod parser;
@@ -191,8 +192,8 @@ impl StatusResponse {
self
}
- pub fn with_tag(mut self, tag: String) -> Self {
- self.tag = Some(tag);
+ pub fn with_tag(mut self, tag: impl Into<String>) -> Self {
+ self.tag = Some(tag.into());
self
}
@@ -224,4 +225,10 @@ impl StatusResponse {
}
}
+impl From<MethodError> for StatusResponse {
+ fn from(_: MethodError) -> Self {
+ StatusResponse::database_failure()
+ }
+}
+
pub type Result<T> = std::result::Result<T, StatusResponse>;
diff --git a/crates/imap-proto/src/protocol/status.rs b/crates/imap-proto/src/protocol/status.rs
index b50de1b4..2bee93f8 100644
--- a/crates/imap-proto/src/protocol/status.rs
+++ b/crates/imap-proto/src/protocol/status.rs
@@ -32,7 +32,7 @@ pub struct Arguments {
pub items: Vec<Status>,
}
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Status {
Messages,
UidNext,