1 /// 2 module imap.defines; 3 import std.stdio; 4 import deimos.openssl.ssl; 5 import imap.socket; 6 import imap.sil : SILdoc; 7 import core.sys.posix.sys.stat; 8 9 static if (is(size_t==uint)) 10 alias ssize_t=int; 11 else 12 alias ssize_t=long; 13 14 15 @SILdoc("IMAP protocol supported by the server") 16 enum ImapProtocol 17 { 18 none = 0, 19 imap4Rev1 = 1, 20 imap4 = 2, 21 } 22 23 @SILdoc("Capabilities of mail server") 24 enum Capability 25 { 26 none = 0x00, 27 28 @("NAMESPACE") 29 namespace = 0x01, 30 31 @("AUTH=CRAM-MD5") 32 cramMD5 = 0x02, 33 34 @("STARTTLS") 35 startTLS = 0x04, 36 37 @("CHILDREN") 38 children = 0x08, 39 40 @("IDLE") 41 idle = 0x10, 42 43 @("IMAP4rev1") 44 imap4Rev1, 45 46 @("IMAP4") 47 imap4, 48 49 @("LITERAL+") 50 literalPlus, 51 52 @("ID") 53 id, 54 55 @("ENABLE") 56 enable, 57 58 @("ACL") 59 acl, 60 61 @("RIGHTS=kxten") 62 rightsKxTen, 63 64 @("QUOTA") 65 quota, 66 67 @("MAILBOX-REFERRALS") 68 mailboxReferrals, 69 70 @("UIDPLUS") 71 uidPlus, 72 73 @("NO_ATOMIC_RENAME") 74 noAtomicRename, 75 76 @("UNSELECT") 77 unselect, 78 79 @("MULTIAPPEND") 80 multiAppend, 81 82 @("MULTISEARCH") 83 multiSearch, 84 85 @("BINARY") 86 binary, 87 88 @("CATENATE") 89 catenate, 90 91 @("CONDSTORE") 92 condStore, 93 94 @("ESEARCH") 95 esearch, 96 97 @("SEARCH=FUZZY") 98 fuzzySearch, 99 100 @("SORT") 101 sort, 102 103 @("SORT=MODSEQ") 104 sortModSeq, 105 106 @("SORT=DISPLAY") 107 sortDisplay, 108 109 @("SORT=UID") 110 sortUID, 111 112 @("THREAD=ORDEREDSUBJECT") 113 threadOrderedSubject, 114 115 @("THREAD=REFERENCES") 116 threadReferences, 117 118 @("THREAD=REFS") 119 threadRefs, 120 121 @("ANNOTATE-EXPERIMENT-1") 122 annotateExperiment1, 123 124 @("METADATA") 125 metadata, 126 127 @("LIST-EXTENDED") 128 listExtended, 129 130 @("LIST-STATUS") 131 listStatus, 132 133 @("LIST-MYRIGHTS") 134 listMyRights, 135 136 @("LIST-METADATA") 137 listMetadata, 138 139 @("WITHIN") 140 within, 141 142 @("QRESYNC") 143 qResync, 144 145 @("SCAN") 146 scan, 147 148 @("XLIST") 149 xlist, 150 151 @("MOVE") 152 move, 153 154 @("SPECIAL-USE") 155 specialUse, 156 157 @("CREATE-SPECIAL-USE") 158 createSpecialUse, 159 160 @("DIGEST=SHA1") 161 digestSHA1, 162 163 @("X-REPLICATION") 164 xReplication, 165 166 @("STATUS=SIZE") 167 statusSize, 168 169 @("OBJECTID") 170 objectID, 171 172 @("SAVEDATE") 173 saveDate, 174 175 @("X-CREATEDMODSEQ") 176 xCreatedModSeq, 177 178 @("PREVIEW=FUZZY") 179 previewFuzzy, 180 181 @("XAPPLEPUSHSERVICE") 182 xApplePushService, 183 184 @("LOGINDISABLED") 185 loginDisabled, 186 187 @("XCONVERSATIONS") 188 xConversations, 189 190 @("COMPRESS=DEFLATE") 191 compressDeflate, 192 193 @("X-QUOTA=STORAGE") 194 xQuoteStorage, 195 196 @("X-QUOTA=MESSAGE") 197 xQuotaMessage, 198 199 @("X-QUOTA=X-ANNOTATION-STORAGE") 200 xQuotaXAnnotationStorage, 201 202 @("X-QUOTA=X-NUM-FOLDERS") 203 xQuotaXNumFolders, 204 205 @("XMOVE") 206 xMove, 207 } 208 209 @SILdoc("Status responses and response codes") 210 enum ImapStatus 211 { 212 none = 0, 213 214 @("OK") 215 ok = 1, 216 217 @("NO") 218 no = 2, 219 220 @("BAD") 221 bad = 3, 222 223 untagged = 4, 224 continue_ = 5, 225 bye = 6, 226 preAuth = 7, 227 readOnly = 8, 228 tryCreate = 9, 229 timeout = 10, 230 unknown = -1, 231 } 232 233 /// 234 enum ImapFlag 235 { 236 @(`\Seen`) 237 seen, 238 239 @(`\Answered`) 240 answered, 241 242 @(`\Flagged`) 243 flagged, 244 245 @(`\Deleted`) 246 deleted, 247 248 @(`\Draft`) 249 draft, 250 } 251 252 253