Add support for resolving special-use folders - #184
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
IMAP servers can identify standard folders such as Sent, Drafts, Trash, and Archive using RFC 6154 special-use attributes. ImapEngine currently requires consumers to inspect raw mailbox attributes and resolve these folders themselves.
This adds a typed folder data builder that allows consumers to explicitly request supported
LISTreturn data:Folder data items share a
FolderDataItemcontract so parameterized return options can use the samewith()API as support for additional extendedLISTdata is added. Requested capabilities are validated before the command is sent.Folder mailbox flags have also been renamed to attributes throughout the public API to match IMAP terminology and distinguish them from message flags.
FolderCollectionresolves the typedImapSpecialUseenum directly from these attributes, keeping special-use methods off the folder interface. Attributes included voluntarily in ordinaryLISTresponses are also recognized. Resolution relies exclusively on RFC attributes and returnsnullinstead of guessing from language-dependent folder names. The fake folder repository supports the same builder API for application tests.