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);
 }
Exemple #15
0
        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();
 }
Exemple #17
0
        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);
 }