Skip to content

Commit d5bda89

Browse files
committedJun 29, 2014
Added more IMAP extensions to the ImapCapabilities flags
1 parent 699b65a commit d5bda89

File tree

7 files changed

+4141
-70
lines changed

7 files changed

+4141
-70
lines changed
 

‎MailKit/Net/Imap/ImapCapabilities.cs

+57-37
Original file line numberDiff line numberDiff line change
@@ -45,177 +45,197 @@ public enum ImapCapabilities : long {
4545
/// <summary>
4646
/// The server implements the core IMAP4 commands.
4747
/// </summary>
48-
IMAP4 = 1L << 0,
48+
IMAP4 = 1L << 0,
4949

5050
/// <summary>
5151
/// The server implements the core IMAP4rev1 commands.
5252
/// </summary>
53-
IMAP4rev1 = 1L << 1,
53+
IMAP4rev1 = 1L << 1,
5454

5555
/// <summary>
5656
/// The server supports the STATUS command.
5757
/// </summary>
58-
Status = 1L << 2,
58+
Status = 1L << 2,
59+
60+
/// <summary>
61+
/// The server supports the ACL extension defined in rfc2086 and rfc4314.
62+
/// </summary>
63+
Acl = 1L << 3,
5964

6065
/// <summary>
6166
/// The server supports the QUOTA extension defined in rfc2087.
6267
/// </summary>
63-
Quota = 1L << 3,
68+
Quota = 1L << 4,
6469

6570
/// <summary>
6671
/// The server supports the LITERAL+ extension defined in rfc2088.
6772
/// </summary>
68-
LiteralPlus = 1L << 4,
73+
LiteralPlus = 1L << 5,
6974

7075
/// <summary>
7176
/// The server supports the IDLE extension defined in rfc2177.
7277
/// </summary>
73-
Idle = 1L << 5,
78+
Idle = 1L << 6,
79+
80+
/// <summary>
81+
/// The server supports the MAILBOX-REFERRALS extension defined in rfc2193.
82+
/// </summary>
83+
MailboxReferrals = 1L << 7,
84+
85+
/// <summary>
86+
/// the server supports the LOGIN-REFERRALS extension defined in rfc2221.
87+
/// </summary>
88+
LoginReferrals = 1L << 8,
7489

7590
/// <summary>
7691
/// The server supports the NAMESPACE extension defined in rfc2342.
7792
/// </summary>
78-
Namespace = 1L << 6,
93+
Namespace = 1L << 9,
94+
95+
/// <summary>
96+
/// The server supports the ID extension defined in rfc2971.
97+
/// </summary>
98+
Id = 1L << 10,
7999

80100
/// <summary>
81101
/// The server supports the CHILDREN extension defined in rfc3348.
82102
/// </summary>
83-
Children = 1L << 7,
103+
Children = 1L << 11,
84104

85105
/// <summary>
86106
/// The server supports the LOGINDISABLED extension defined in rfc3501.
87107
/// </summary>
88-
LoginDisabled = 1L << 8,
108+
LoginDisabled = 1L << 12,
89109

90110
/// <summary>
91111
/// The server supports the StartTLS extension defined in rfc3501.
92112
/// </summary>
93-
StartTLS = 1L << 9,
113+
StartTLS = 1L << 13,
94114

95115
/// <summary>
96116
/// The server supports the MULTIAPPEND extension defined in rfc3502.
97117
/// </summary>
98-
MultiAppend = 1L << 10,
118+
MultiAppend = 1L << 14,
99119

100120
/// <summary>
101121
/// The server supports the BINARY content extension defined in rfc3516.
102122
/// </summary>
103-
Binary = 1L << 11,
123+
Binary = 1L << 15,
104124

105125
/// <summary>
106126
/// The server supports the UNSELECT extension defined in rfc3691.
107127
/// </summary>
108-
Unselect = 1L << 12,
128+
Unselect = 1L << 16,
109129

110130
/// <summary>
111131
/// The server supports the UIDPLUS extension defined in rfc4315.
112132
/// </summary>
113-
UidPlus = 1L << 13,
133+
UidPlus = 1L << 17,
114134

115135
/// <summary>
116136
/// The server supports the CATENATE extension defined in rfc4469.
117137
/// </summary>
118-
Catenate = 1L << 14,
138+
Catenate = 1L << 18,
119139

120140
/// <summary>
121141
/// The server supports the CONDSTORE extension defined in rfc4551.
122142
/// </summary>
123-
CondStore = 1L << 15,
143+
CondStore = 1L << 19,
124144

125145
/// <summary>
126146
/// The server supports the ESEARCH extension defined in rfc4731.
127147
/// </summary>
128-
ESearch = 1L << 16,
148+
ESearch = 1L << 20,
129149

130150
/// <summary>
131151
/// The server supports the SASL-IR extension defined in rfc4959.
132152
/// </summary>
133-
SaslIR = 1L << 17,
153+
SaslIR = 1L << 21,
134154

135155
/// <summary>
136156
/// The server supports the COMPRESS extension defined in rfc4978.
137157
/// </summary>
138-
Compress = 1L << 18,
158+
Compress = 1L << 22,
139159

140160
/// <summary>
141161
/// The server supports the WITHIN extension defined in rfc5032.
142162
/// </summary>
143-
Within = 1L << 19,
163+
Within = 1L << 23,
144164

145165
/// <summary>
146166
/// The server supports the ENABLE extension defined in rfc5161.
147167
/// </summary>
148-
Enable = 1L << 20,
168+
Enable = 1L << 24,
149169

150170
/// <summary>
151171
/// The server supports the QRESYNC extension defined in rfc5162.
152172
/// </summary>
153-
QuickResync = 1L << 21,
173+
QuickResync = 1L << 25,
154174

155175
/// <summary>
156176
/// The server supports the SORT extension defined in rfc5256.
157177
/// </summary>
158-
Sort = 1L << 22,
178+
Sort = 1L << 26,
159179

160180
/// <summary>
161181
/// The server supports the THREAD extension defined in rfc5256.
162182
/// </summary>
163-
Thread = 1L << 23,
183+
Thread = 1L << 27,
164184

165185
/// <summary>
166186
/// The server supports the LIST-EXTENDED extension defined in rfc5258.
167187
/// </summary>
168-
ListExtended = 1L << 24,
188+
ListExtended = 1L << 28,
169189

170190
/// <summary>
171191
/// The server supports the CONVERT extension defined in rfc5259.
172192
/// </summary>
173-
Convert = 1L << 25,
193+
Convert = 1L << 29,
174194

175195
/// <summary>
176196
/// The server supports the ESORT extension defined in rfc5267.
177197
/// </summary>
178-
ESort = 1L << 26,
198+
ESort = 1L << 30,
179199

180200
/// <summary>
181201
/// The server supports the CONTEXT extension defined in rfc5267.
182202
/// </summary>
183-
Context = 1L << 27,
203+
Context = 1L << 31,
184204

185205
/// <summary>
186206
/// The server supports the METADATA extension defined in rfc5464.
187207
/// </summary>
188-
Metadata = 1L << 28,
208+
Metadata = 1L << 32,
189209

190210
/// <summary>
191211
/// The server supports the NOTIFY extension defined in rfc5465.
192212
/// </summary>
193-
Notify = 1L << 29,
213+
Notify = 1L << 33,
194214

195215
/// <summary>
196216
/// The server supports the FILTERS extension defined in rfc5466.
197217
/// </summary>
198-
Filters = 1L << 30,
218+
Filters = 1L << 34,
199219

200220
/// <summary>
201221
/// The server supports the LIST-STATUS extension defined in rfc5819.
202222
/// </summary>
203-
ListStatus = 1L << 31,
223+
ListStatus = 1L << 35,
204224

205225
/// <summary>
206226
/// The server supports the SEPCIAL-USE extension defined in rfc6154.
207227
/// </summary>
208-
SpecialUse = 1L << 32,
228+
SpecialUse = 1L << 36,
209229

210230
/// <summary>
211231
/// The server supports the MULTISEARCH extension defined in rfc6237.
212232
/// </summary>
213-
MultiSearch = 1L << 33,
233+
MultiSearch = 1L << 37,
214234

215235
/// <summary>
216236
/// The server supports the MOVE extension defined in rfc6851.
217237
/// </summary>
218-
Move = 1L << 34,
238+
Move = 1L << 38,
219239

220240
#region GMail Extensions
221241

@@ -224,12 +244,12 @@ public enum ImapCapabilities : long {
224244
/// <summary>
225245
/// The server supports the XLIST extension (GMail).
226246
/// </summary>
227-
XList = 1L << 35,
247+
XList = 1L << 39,
228248

229249
/// <summary>
230250
/// The server supports the X-GM-EXT1 extension (GMail).
231251
/// </summary>
232-
GMailExt1 = 1L << 36
252+
GMailExt1 = 1L << 40
233253

234254
#endregion
235255
}

‎MailKit/Net/Imap/ImapEngine.cs

+37-33
Original file line numberDiff line numberDiff line change
@@ -704,39 +704,43 @@ void UpdateCapabilities (ImapTokenType sentinel, CancellationToken cancellationT
704704
Capabilities |= ImapCapabilities.Thread;
705705
} else {
706706
switch (atom.ToUpperInvariant ()) {
707-
case "IMAP4": Capabilities |= ImapCapabilities.IMAP4; break;
708-
case "IMAP4REV1": Capabilities |= ImapCapabilities.IMAP4rev1; break;
709-
case "STATUS": Capabilities |= ImapCapabilities.Status; break;
710-
case "QUOTA": Capabilities |= ImapCapabilities.Quota; break;
711-
case "LITERAL+": Capabilities |= ImapCapabilities.LiteralPlus; break;
712-
case "IDLE": Capabilities |= ImapCapabilities.Idle; break;
713-
case "NAMESPACE": Capabilities |= ImapCapabilities.Namespace; break;
714-
case "CHILDREN": Capabilities |= ImapCapabilities.Children; break;
715-
case "LOGINDISABLED": Capabilities |= ImapCapabilities.LoginDisabled; break;
716-
case "STARTTLS": Capabilities |= ImapCapabilities.StartTLS; break;
717-
case "MULTIAPPEND": Capabilities |= ImapCapabilities.MultiAppend; break;
718-
case "BINARY": Capabilities |= ImapCapabilities.Binary; break;
719-
case "UNSELECT": Capabilities |= ImapCapabilities.Unselect; break;
720-
case "UIDPLUS": Capabilities |= ImapCapabilities.UidPlus; break;
721-
case "CATENATE": Capabilities |= ImapCapabilities.Catenate; break;
722-
case "CONDSTORE": Capabilities |= ImapCapabilities.CondStore; break;
723-
case "ESEARCH": Capabilities |= ImapCapabilities.ESearch; break;
724-
case "SASL-IR": Capabilities |= ImapCapabilities.SaslIR; break;
725-
case "WITHIN": Capabilities |= ImapCapabilities.Within; break;
726-
case "ENABLE": Capabilities |= ImapCapabilities.Enable; break;
727-
case "QRESYNC": Capabilities |= ImapCapabilities.QuickResync; break;
728-
case "SORT": Capabilities |= ImapCapabilities.Sort; break;
729-
case "LIST-EXTENDED": Capabilities |= ImapCapabilities.ListExtended; break;
730-
case "CONVERT": Capabilities |= ImapCapabilities.Convert; break;
731-
case "ESORT": Capabilities |= ImapCapabilities.ESort; break;
732-
case "METADATA": Capabilities |= ImapCapabilities.Metadata; break;
733-
case "NOTIFY": Capabilities |= ImapCapabilities.Notify; break;
734-
case "LIST-STATUS": Capabilities |= ImapCapabilities.ListStatus; break;
735-
case "SPECIAL-USE": Capabilities |= ImapCapabilities.SpecialUse; break;
736-
case "MULTISEARCH": Capabilities |= ImapCapabilities.MultiSearch; break;
737-
case "MOVE": Capabilities |= ImapCapabilities.Move; break;
738-
case "XLIST": Capabilities |= ImapCapabilities.XList; break;
739-
case "X-GM-EXT-1": Capabilities |= ImapCapabilities.GMailExt1; break;
707+
case "IMAP4": Capabilities |= ImapCapabilities.IMAP4; break;
708+
case "IMAP4REV1": Capabilities |= ImapCapabilities.IMAP4rev1; break;
709+
case "STATUS": Capabilities |= ImapCapabilities.Status; break;
710+
case "ACL": Capabilities |= ImapCapabilities.Acl; break;
711+
case "QUOTA": Capabilities |= ImapCapabilities.Quota; break;
712+
case "LITERAL+": Capabilities |= ImapCapabilities.LiteralPlus; break;
713+
case "IDLE": Capabilities |= ImapCapabilities.Idle; break;
714+
case "MAILBOX-REFERRALS": Capabilities |= ImapCapabilities.MailboxReferrals; break;
715+
case "LOGIN-REFERRALS": Capabilities |= ImapCapabilities.LoginReferrals; break;
716+
case "NAMESPACE": Capabilities |= ImapCapabilities.Namespace; break;
717+
case "ID": Capabilities |= ImapCapabilities.Id; break;
718+
case "CHILDREN": Capabilities |= ImapCapabilities.Children; break;
719+
case "LOGINDISABLED": Capabilities |= ImapCapabilities.LoginDisabled; break;
720+
case "STARTTLS": Capabilities |= ImapCapabilities.StartTLS; break;
721+
case "MULTIAPPEND": Capabilities |= ImapCapabilities.MultiAppend; break;
722+
case "BINARY": Capabilities |= ImapCapabilities.Binary; break;
723+
case "UNSELECT": Capabilities |= ImapCapabilities.Unselect; break;
724+
case "UIDPLUS": Capabilities |= ImapCapabilities.UidPlus; break;
725+
case "CATENATE": Capabilities |= ImapCapabilities.Catenate; break;
726+
case "CONDSTORE": Capabilities |= ImapCapabilities.CondStore; break;
727+
case "ESEARCH": Capabilities |= ImapCapabilities.ESearch; break;
728+
case "SASL-IR": Capabilities |= ImapCapabilities.SaslIR; break;
729+
case "WITHIN": Capabilities |= ImapCapabilities.Within; break;
730+
case "ENABLE": Capabilities |= ImapCapabilities.Enable; break;
731+
case "QRESYNC": Capabilities |= ImapCapabilities.QuickResync; break;
732+
case "SORT": Capabilities |= ImapCapabilities.Sort; break;
733+
case "LIST-EXTENDED": Capabilities |= ImapCapabilities.ListExtended; break;
734+
case "CONVERT": Capabilities |= ImapCapabilities.Convert; break;
735+
case "ESORT": Capabilities |= ImapCapabilities.ESort; break;
736+
case "METADATA": Capabilities |= ImapCapabilities.Metadata; break;
737+
case "NOTIFY": Capabilities |= ImapCapabilities.Notify; break;
738+
case "LIST-STATUS": Capabilities |= ImapCapabilities.ListStatus; break;
739+
case "SPECIAL-USE": Capabilities |= ImapCapabilities.SpecialUse; break;
740+
case "MULTISEARCH": Capabilities |= ImapCapabilities.MultiSearch; break;
741+
case "MOVE": Capabilities |= ImapCapabilities.Move; break;
742+
case "XLIST": Capabilities |= ImapCapabilities.XList; break;
743+
case "X-GM-EXT-1": Capabilities |= ImapCapabilities.GMailExt1; break;
740744
}
741745
}
742746

0 commit comments

Comments
 (0)