// // ImapFolderInfo.cs // // Author: Jeffrey Stedfast // // Copyright (c) 2013-2020 .NET Foundation and Contributors // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // using System; namespace MailKit.Net.Imap { /// /// Constructor arguments for . /// /// /// Constructor arguments for . /// public sealed class ImapFolderConstructorArgs { internal readonly string EncodedName; internal readonly ImapEngine Engine; /// /// Initializes a new instance of the class. /// /// The IMAP command engine. /// The encoded name. /// The attributes. /// The directory separator. internal ImapFolderConstructorArgs (ImapEngine engine, string encodedName, FolderAttributes attributes, char delim) : this () { FullName = engine.DecodeMailboxName (encodedName); Name = GetBaseName (FullName, delim); DirectorySeparator = delim; EncodedName = encodedName; Attributes = attributes; Engine = engine; } ImapFolderConstructorArgs () { } /// /// Get the folder attributes. /// /// /// Gets the folder attributes. /// /// The folder attributes. public FolderAttributes Attributes { get; private set; } /// /// Get the directory separator. /// /// /// Gets the directory separator. /// /// The directory separator. public char DirectorySeparator { get; private set; } /// /// Get the full name of the folder. /// /// /// This is the equivalent of the full path of a file on a file system. /// /// The full name of the folder. public string FullName { get; private set; } /// /// Get the name of the folder. /// /// /// This is the equivalent of the file name of a file on the file system. /// /// The name of the folder. public string Name { get; private set; } static string GetBaseName (string fullName, char delim) { var names = fullName.Split (new [] { delim }, StringSplitOptions.RemoveEmptyEntries); return names.Length > 0 ? names[names.Length - 1] : fullName; } } }