JMAP protocol layer refactoring (part 1)
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
use jmap_proto::request::capability::BaseCapabilities;
|
||||
use nlp::language::Language;
|
||||
use std::{str::FromStr, time::Duration};
|
||||
use types::special_use::SpecialUse;
|
||||
use utils::config::{Config, Rate, cron::SimpleCron, utils::ParseValue};
|
||||
|
||||
#[derive(Default, Clone)]
|
||||
@@ -83,22 +84,6 @@ pub struct DefaultFolder {
|
||||
pub create: bool,
|
||||
}
|
||||
|
||||
#[derive(
|
||||
rkyv::Archive, rkyv::Deserialize, rkyv::Serialize, Clone, Copy, PartialEq, Eq, Hash, Debug,
|
||||
)]
|
||||
#[rkyv(derive(Debug))]
|
||||
pub enum SpecialUse {
|
||||
Inbox,
|
||||
Trash,
|
||||
Junk,
|
||||
Drafts,
|
||||
Archive,
|
||||
Sent,
|
||||
Shared,
|
||||
Important,
|
||||
None,
|
||||
}
|
||||
|
||||
impl JmapConfig {
|
||||
pub fn parse(config: &mut Config) -> Self {
|
||||
// Parse HTTP headers
|
||||
@@ -364,65 +349,6 @@ impl JmapConfig {
|
||||
|
||||
impl ParseValue for SpecialUse {
|
||||
fn parse_value(value: &str) -> Result<Self, String> {
|
||||
hashify::tiny_map_ignore_case!(value.as_bytes(),
|
||||
b"inbox" => SpecialUse::Inbox,
|
||||
b"trash" => SpecialUse::Trash,
|
||||
b"junk" => SpecialUse::Junk,
|
||||
b"drafts" => SpecialUse::Drafts,
|
||||
b"archive" => SpecialUse::Archive,
|
||||
b"sent" => SpecialUse::Sent,
|
||||
b"shared" => SpecialUse::Shared,
|
||||
b"important" => SpecialUse::Important,
|
||||
|
||||
)
|
||||
.ok_or_else(|| format!("Unknown folder role {:?}", value))
|
||||
}
|
||||
}
|
||||
|
||||
impl SpecialUse {
|
||||
pub fn as_str(&self) -> Option<&'static str> {
|
||||
match self {
|
||||
SpecialUse::Inbox => Some("inbox"),
|
||||
SpecialUse::Trash => Some("trash"),
|
||||
SpecialUse::Junk => Some("junk"),
|
||||
SpecialUse::Drafts => Some("drafts"),
|
||||
SpecialUse::Archive => Some("archive"),
|
||||
SpecialUse::Sent => Some("sent"),
|
||||
SpecialUse::Shared => Some("shared"),
|
||||
SpecialUse::Important => Some("important"),
|
||||
SpecialUse::None => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ArchivedSpecialUse {
|
||||
pub fn as_str(&self) -> Option<&'static str> {
|
||||
match self {
|
||||
ArchivedSpecialUse::Inbox => Some("inbox"),
|
||||
ArchivedSpecialUse::Trash => Some("trash"),
|
||||
ArchivedSpecialUse::Junk => Some("junk"),
|
||||
ArchivedSpecialUse::Drafts => Some("drafts"),
|
||||
ArchivedSpecialUse::Archive => Some("archive"),
|
||||
ArchivedSpecialUse::Sent => Some("sent"),
|
||||
ArchivedSpecialUse::Shared => Some("shared"),
|
||||
ArchivedSpecialUse::Important => Some("important"),
|
||||
ArchivedSpecialUse::None => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&ArchivedSpecialUse> for SpecialUse {
|
||||
fn from(value: &ArchivedSpecialUse) -> Self {
|
||||
match value {
|
||||
ArchivedSpecialUse::Inbox => SpecialUse::Inbox,
|
||||
ArchivedSpecialUse::Trash => SpecialUse::Trash,
|
||||
ArchivedSpecialUse::Junk => SpecialUse::Junk,
|
||||
ArchivedSpecialUse::Drafts => SpecialUse::Drafts,
|
||||
ArchivedSpecialUse::Archive => SpecialUse::Archive,
|
||||
ArchivedSpecialUse::Sent => SpecialUse::Sent,
|
||||
ArchivedSpecialUse::Shared => SpecialUse::Shared,
|
||||
ArchivedSpecialUse::Important => SpecialUse::Important,
|
||||
ArchivedSpecialUse::None => SpecialUse::None,
|
||||
}
|
||||
SpecialUse::parse(value).ok_or_else(|| format!("Unknown folder role {:?}", value))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user