···
(** Module for managing JMAP Mail-specific capability URIs *)
module Capability = struct
5
-
(** Mail capability types *)
(** Mail capability URI *)
let mail_uri = "urn:ietf:params:jmap:mail"
11
-
(** Convert mail capability to URI string *)
12
-
let string_of_mail = function
15
-
(** Parse a string to mail capability *)
16
-
let mail_of_string = function
17
-
| s when s = mail_uri -> Some Mail
20
-
(** Submission capability types *)
21
-
type submission = Submission
(** Submission capability URI *)
let submission_uri = "urn:ietf:params:jmap:submission"
26
-
(** Convert submission capability to URI string *)
27
-
let string_of_submission = function
28
-
| Submission -> submission_uri
30
-
(** Parse a string to submission capability *)
31
-
let submission_of_string = function
32
-
| s when s = submission_uri -> Some Submission
35
-
(** Vacation response capability types *)
36
-
type vacation_response = VacationResponse
(** Vacation response capability URI *)
let vacation_response_uri = "urn:ietf:params:jmap:vacationresponse"
41
-
(** Convert vacation response capability to URI string *)
42
-
let string_of_vacation_response = function
43
-
| VacationResponse -> vacation_response_uri
45
-
(** Parse a string to vacation response capability *)
46
-
let vacation_response_of_string = function
47
-
| s when s = vacation_response_uri -> Some VacationResponse
(** All mail extension capability types *)
53
-
| Submission of submission
54
-
| VacationResponse of vacation_response
55
-
| Extension of string
16
+
| Mail (** Mail capability *)
17
+
| Submission (** Submission capability *)
18
+
| VacationResponse (** Vacation response capability *)
19
+
| Extension of string (** Custom extension *)
(** Convert capability to URI string *)
59
-
| Mail m -> string_of_mail m
60
-
| Submission s -> string_of_submission s
61
-
| VacationResponse v -> string_of_vacation_response v
24
+
| Submission -> submission_uri
25
+
| VacationResponse -> vacation_response_uri
(** Parse a string to a capability *)
66
-
match mail_of_string s with
69
-
match submission_of_string s with
70
-
| Some s -> Submission s
72
-
match vacation_response_of_string s with
73
-
| Some v -> VacationResponse v
74
-
| None -> Extension s
30
+
if s = mail_uri then Mail
31
+
else if s = submission_uri then Submission
32
+
else if s = vacation_response_uri then VacationResponse
(** Check if a capability is a standard mail capability *)
let is_standard = function
78
-
| Mail _ | Submission _ | VacationResponse _ -> true
37
+
| Mail | Submission | VacationResponse -> true
(** Check if a capability string is a standard mail capability *)
let is_standard_string s =
83
-
match of_string s with
84
-
| Extension _ -> false
42
+
s = mail_uri || s = submission_uri || s = vacation_response_uri
(** Create a list of capability strings *)
let strings_of_capabilities capabilities =
···
let get_mailboxes conn ~account_id =
1300
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
1301
-
Capability.to_string (Capability.Mail Mail)
1257
+
Jmap.Capability.to_string Jmap.Capability.Core;
1258
+
Capability.to_string Capability.Mail
···
let get_mailbox conn ~account_id ~mailbox_id =
1349
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
1350
-
Capability.to_string (Capability.Mail Mail)
1306
+
Jmap.Capability.to_string Jmap.Capability.Core;
1307
+
Capability.to_string Capability.Mail
···
(* First query the emails in the mailbox *)
1396
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
1397
-
Capability.to_string (Capability.Mail Mail)
1353
+
Jmap.Capability.to_string Jmap.Capability.Core;
1354
+
Capability.to_string Capability.Mail
···
if List.length email_ids > 0 then
1434
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
1435
-
Capability.to_string (Capability.Mail Mail)
1391
+
Jmap.Capability.to_string Jmap.Capability.Core;
1392
+
Capability.to_string Capability.Mail
···
let get_email conn ~account_id ~email_id =
1491
-
Jmap.Capability.to_string (Jmap.Capability.Core Core);
1492
-
Capability.to_string (Capability.Mail Mail)
1448
+
Jmap.Capability.to_string Jmap.Capability.Core;
1449
+
Capability.to_string Capability.Mail