use alloc::{collections::BTreeMap, string::String, vec::Vec};
use serde::{Deserialize, Serialize};
pub mod changes;
pub mod copy;
pub mod get;
pub mod import;
pub mod parse;
pub mod query;
pub mod set;
pub const JMAP_KEYWORD_SEEN: &str = "$seen";
pub const JMAP_KEYWORD_FLAGGED: &str = "$flagged";
pub const JMAP_KEYWORD_ANSWERED: &str = "$answered";
pub const JMAP_KEYWORD_DRAFT: &str = "$draft";
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct JmapEmail {
pub id: Option<String>,
pub blob_id: Option<String>,
pub thread_id: Option<String>,
pub mailbox_ids: Option<BTreeMap<String, bool>>,
pub keywords: Option<BTreeMap<String, bool>>,
pub size: Option<u64>,
pub received_at: Option<String>,
pub message_id: Option<Vec<String>>,
pub in_reply_to: Option<Vec<String>>,
pub references: Option<Vec<String>>,
pub sender: Option<Vec<JmapEmailAddress>>,
pub from: Option<Vec<JmapEmailAddress>>,
pub to: Option<Vec<JmapEmailAddress>>,
pub cc: Option<Vec<JmapEmailAddress>>,
pub bcc: Option<Vec<JmapEmailAddress>>,
pub reply_to: Option<Vec<JmapEmailAddress>>,
pub subject: Option<String>,
pub sent_at: Option<String>,
pub body_structure: Option<JmapEmailBodyPart>,
pub body_values: Option<BTreeMap<String, JmapEmailBodyValue>>,
pub text_body: Option<Vec<JmapEmailBodyPart>>,
pub html_body: Option<Vec<JmapEmailBodyPart>>,
pub attachments: Option<Vec<JmapEmailBodyPart>>,
pub has_attachment: Option<bool>,
pub preview: Option<String>,
pub headers: Option<Vec<JmapEmailHeader>>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct JmapEmailAddress {
pub name: Option<String>,
pub email: String,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct JmapEmailHeader {
pub name: String,
pub value: String,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct JmapEmailBodyPart {
pub part_id: Option<String>,
pub blob_id: Option<String>,
pub size: Option<u64>,
pub name: Option<String>,
pub r#type: Option<String>,
pub charset: Option<String>,
pub disposition: Option<String>,
pub cid: Option<String>,
pub language: Option<Vec<String>>,
pub location: Option<String>,
pub sub_parts: Option<Vec<JmapEmailBodyPart>>,
pub headers: Option<Vec<JmapEmailHeader>>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct JmapEmailBodyValue {
pub value: String,
pub is_encoding_problem: bool,
pub is_truncated: bool,
}
#[derive(Clone, Debug, Serialize)]
#[serde(rename_all = "camelCase")]
pub enum JmapEmailProperty {
Id,
BlobId,
ThreadId,
MailboxIds,
Keywords,
Size,
ReceivedAt,
MessageId,
InReplyTo,
References,
Sender,
From,
To,
Cc,
Bcc,
ReplyTo,
Subject,
SentAt,
BodyStructure,
BodyValues,
TextBody,
HtmlBody,
Attachments,
HasAttachment,
Preview,
Headers,
}