···
(** Module for managing JMAP Mail-specific capability URIs *)
module Capability = struct
-
(** Mail capability types *)
(** Mail capability URI *)
let mail_uri = "urn:ietf:params:jmap:mail"
-
(** Convert mail capability to URI string *)
-
let string_of_mail = function
-
(** Parse a string to mail capability *)
-
let mail_of_string = function
-
| s when s = mail_uri -> Some Mail
-
(** Submission capability types *)
-
type submission = Submission
(** Submission capability URI *)
let submission_uri = "urn:ietf:params:jmap:submission"
-
(** Convert submission capability to URI string *)
-
let string_of_submission = function
-
| Submission -> submission_uri
-
(** Parse a string to submission capability *)
-
let submission_of_string = function
-
| s when s = submission_uri -> Some Submission
-
(** Vacation response capability types *)
-
type vacation_response = VacationResponse
(** Vacation response capability URI *)
let vacation_response_uri = "urn:ietf:params:jmap:vacationresponse"
-
(** Convert vacation response capability to URI string *)
-
let string_of_vacation_response = function
-
| VacationResponse -> vacation_response_uri
-
(** Parse a string to vacation response capability *)
-
let vacation_response_of_string = function
-
| s when s = vacation_response_uri -> Some VacationResponse
(** All mail extension capability types *)
-
| Submission of submission
-
| VacationResponse of vacation_response
(** Convert capability to URI string *)
-
| Mail m -> string_of_mail m
-
| Submission s -> string_of_submission s
-
| VacationResponse v -> string_of_vacation_response v
(** Parse a string to a capability *)
-
match mail_of_string s with
-
match submission_of_string s with
-
| Some s -> Submission s
-
match vacation_response_of_string s with
-
| Some v -> VacationResponse v
(** Check if a capability is a standard mail capability *)
let is_standard = function
-
| Mail _ | Submission _ | VacationResponse _ -> true
(** Check if a capability string is a standard mail capability *)
let is_standard_string s =
(** Create a list of capability strings *)
let strings_of_capabilities capabilities =
···
let get_mailboxes conn ~account_id =
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
-
Capability.to_string (Capability.Mail Mail)
···
let get_mailbox conn ~account_id ~mailbox_id =
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
-
Capability.to_string (Capability.Mail Mail)
···
(* First query the emails in the mailbox *)
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
-
Capability.to_string (Capability.Mail Mail)
···
if List.length email_ids > 0 then
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
-
Capability.to_string (Capability.Mail Mail)
···
let get_email conn ~account_id ~email_id =
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
-
Capability.to_string (Capability.Mail Mail)