public ImapMailboxInfo GetOrCreateParent(ImapMailboxListOptions options) { return GetOrCreateParent(ImapClient.DefaultSubscription, options); }
/// <remarks>This method throws NotSupportedException if <see cref="CanHaveChild"/> is false.</remarks> public ImapMailboxInfo GetOrCreateChild(string name, ImapMailboxListOptions options) { return GetOrCreateChild(name, ImapClient.DefaultSubscription, options); }
/// <remarks>This method throws NotSupportedException if <see cref="CanHaveChild"/> is false.</remarks> public ImapMailboxInfo GetOrCreateChild(string name, bool subscribe, ImapMailboxListOptions options) { return client.GetMailboxNoException(GetFullNameOf(name), options) ?? CreateChild(name, subscribe); }
/// <remarks>This method throws NotSupportedException if <see cref="CanHaveChild"/> is false.</remarks> public ImapMailboxInfo GetChild(string name, ImapMailboxListOptions options) { return client.GetMailbox(GetFullNameOf(name), options); }
public IEnumerable<ImapMailboxInfo> GetMailboxes(ImapMailboxListOptions options) { return client.GetMailboxes(mailbox, options); }
public ImapMailboxInfo GetMailbox(string mailboxName, ImapMailboxListOptions options) { var mailbox = GetMailboxNoException(mailboxName, options); if (mailbox == null) throw new ImapMailboxNotFoundException(mailboxName); else return mailbox; }
private static void TranslateListOptions(ImapMailboxListOptions options, out bool subscribedOnly, out bool listRemote, out bool requestStatus) { subscribedOnly = 0 != (int)(options & ImapMailboxListOptions.SubscribedOnly); listRemote = 0 != (int)(options & ImapMailboxListOptions.Remote); requestStatus = 0 != (int)(options & ImapMailboxListOptions.RequestStatus); }
internal IEnumerable<ImapMailboxInfo> GetMailboxes(ImapMailbox mailbox, ImapMailboxListOptions options) { return GetMailboxes(mailbox.Name, mailbox.HierarchyDelimiter, true, mailbox.Flags.Has(ImapMailboxFlag.NoInferiors), // ignore HasNoChildren options); }
internal IEnumerable<ImapMailboxInfo> GetMailboxes(string mailboxName, string hierarchyDelimiter, bool patternMatching, bool isNonHierarchical, ImapMailboxListOptions options) { string mailboxNamePattern; if (patternMatching) { if (mailboxName == null) { mailboxNamePattern = string.Empty; } else { if (string.IsNullOrEmpty(hierarchyDelimiter)) yield break; else if (isNonHierarchical) yield break; mailboxNamePattern = mailboxName + hierarchyDelimiter; } mailboxNamePattern += ((int)(options & ImapMailboxListOptions.TopLevelOnly) != 0) ? "%" : "*"; } else { mailboxNamePattern = mailboxName ?? string.Empty; } bool subscribedOnly, listRemote, requestStatus; TranslateListOptions(options, out subscribedOnly, out listRemote, out requestStatus); ImapMailbox[] mailboxes; if (ServerCapabilities.Has(ImapCapability.ListExtended)) { var selectionOptions = ImapListSelectionOptions.Empty; var returnOptions = ImapListReturnOptions.Children; if (subscribedOnly) selectionOptions += ImapListSelectionOptions.Subscribed; if (listRemote) selectionOptions += ImapListSelectionOptions.Remote; if (requestStatus && ServerCapabilities.Has(ImapCapability.ListStatus)) { returnOptions += ImapListReturnOptions.StatusDataItems(ImapMailboxInfo.GetStatusDataItem(ServerCapabilities)); requestStatus = false; // no need to request STATUS } ThrowIfError(Session.ListExtended(mailboxNamePattern, selectionOptions, returnOptions, out mailboxes)); } else if (ServerCapabilities.Has(ImapCapability.MailboxReferrals) && listRemote) { if (subscribedOnly) ThrowIfError(Session.RLsub(mailboxNamePattern, out mailboxes)); else ThrowIfError(Session.RList(mailboxNamePattern, out mailboxes)); } else { if (subscribedOnly) ThrowIfError(Session.Lsub(mailboxNamePattern, out mailboxes)); else ThrowIfError(Session.List(mailboxNamePattern, out mailboxes)); } var selectedMailboxName = openedMailbox == null ? null : openedMailbox.FullName; foreach (var m in mailboxes) { if (requestStatus && !m.IsUnselectable && !string.Equals(m.Name, selectedMailboxName)) ThrowIfError(Session.Status(m, ImapMailboxInfo.GetStatusDataItem(ServerCapabilities))); yield return new ImapMailboxInfo(this, m); } }
public ImapOpenedMailboxInfo OpenMailbox(string mailboxName, ImapMailboxListOptions options) { return OpenMailbox(mailboxName, options, DefaultSelectReadOnly); }
public ImapOpenedMailboxInfo OpenMailbox(string mailboxName, ImapMailboxListOptions options, bool readOnly) { return OpenMailbox(GetMailbox(mailboxName, options), readOnly); }
public ImapMailboxInfo GetOrCreateMailbox(string mailboxName, bool subscribe, ImapMailboxListOptions options) { var mailbox = GetMailboxNoException(mailboxName, options); if (mailbox == null) return CreateMailbox(mailboxName, subscribe); else return mailbox; }
public ImapMailboxInfo GetOrCreateMailbox(string mailboxName, ImapMailboxListOptions options) { return GetOrCreateMailbox(mailboxName, DefaultSubscription, options); }
public IEnumerable<ImapMailboxInfo> GetMailboxes(ImapMailboxListOptions options) { return GetMailboxes(null, null, true, false, options); }
public ImapMailboxInfo GetOrCreateParent(bool subscribe, ImapMailboxListOptions options) { if (string.Empty.Equals(mailbox.SuperiorName)) return null; return client.GetOrCreateMailbox(mailbox.SuperiorName, subscribe, options); }
internal ImapMailboxInfo GetMailboxNoException(string mailboxName, ImapMailboxListOptions options) { return GetMailboxes(mailboxName, null, false, false, options).FirstOrDefault(); }
public ImapMailboxInfo GetParent(ImapMailboxListOptions options) { if (string.Empty.Equals(mailbox.SuperiorName)) return null; return client.GetMailbox(mailbox.SuperiorName, options); }
public ImapMailboxInfo GetInbox(ImapMailboxListOptions options) { return GetMailbox(ImapMailbox.Inbox, options); }