/// <summary>
 /// Initialize common fields
 /// </summary>
 protected BaseCommand(CommandDataReceivedCallback callback)
 {
     _parameters = new List<string>();
     _parameterObjs = new List<object>();
     _commandString = "";
     CommandDataReceived = callback;
 }
Beispiel #2
0
        /// <summary>
        /// Create a custom command with no specific parameters
        /// </summary>
        /// <param name="cmdString"></param>
        /// <param name="optionalParams">Optional parameters to provide for this command</param>
        /// <param name="callback"></param>
        public CustomCommand(string cmdString, CommandDataReceivedCallback callback, params object[] optionalParams)
            : base(callback)
        {
            _parameterObjs.AddRange(optionalParams);

            CommandString = String.Format(cmdString, optionalParams);
        }
 /// <summary>
 /// Create a new ExamineFolderCommand for the specified folder
 /// </summary>
 /// <param name="folder"></param>
 /// <param name="callback"></param>
 public ExamineFolderCommand(IFolder folder, CommandDataReceivedCallback callback)
     : base(callback)
 {
     _parameters.Add(folder.FullPath);
     _parameterObjs.Add(folder);
     CommandString = String.Format("EXAMINE \"{0}\"", Parameters);
 }
        /// <summary>
        /// Create a new MessageListCommand for the specified folder
        /// </summary>
        /// <param name="folder"></param>
        /// <param name="callback"></param>
        public MessageListCommand(IFolder folder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            _parameterObjs.Add(folder);

            CommandString = String.Format("UID SEARCH all");
        }
Beispiel #5
0
        /// <summary>
        /// Generates a new FolderListCommand specifying the root folder
        /// </summary>
        /// <param name="rootFolder"></param>
        /// <param name="callback"></param>
        public FolderListCommand(string rootFolder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            _parameters.Add(rootFolder);

            CommandString = String.Format("LIST {0} \"*\"", Parameters);
        }
 /// <summary>
 /// Create a new SelectFolderCommand for the specified folder
 /// </summary>
 /// <param name="folder"></param>
 /// <param name="callback"></param>
 public SelectFolderCommand(IFolder folder, CommandDataReceivedCallback callback)
     : base(callback)
 {
     _parameters.Add(folder.FullPath);
     _parameterObjs.Add(folder);
     CommandString = String.Format("SELECT \"{0}\"", Parameters);
 }
        public CreateFolderCommand(string folderName, IFolder parentFolder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            System.Text.StringBuilder b = new System.Text.StringBuilder(folderName);
            for (int i = 0; i < b.Length; ++i)
            {
                if (b[i] == '+')
                {
                    b[i] = '&';
                }
                else if (b[i] == '&')
                {
                    b[i] = '+';
                }
            }
            folderName = b.ToString();
            byte[] utf7String = System.Text.Encoding.UTF7.GetBytes(folderName);
            folderName = System.Text.Encoding.ASCII.GetString(utf7String);
            folderName = folderName.Replace('/', ',').Replace('+', '&');

            string fullFolder = parentFolder != null
                                    ? String.Format("{0}/{1}", parentFolder.FullEncodedPath, folderName)
                                    : folderName;

            fullFolder = fullFolder.Replace("\"", "");

            _parameters.Add(fullFolder);
            CommandString = String.Format("CREATE \"{0}\"", fullFolder);
        }
Beispiel #8
0
 /// <summary>
 /// Create a new ExamineFolderCommand for the specified folder
 /// </summary>
 /// <param name="folder"></param>
 /// <param name="callback"></param>
 public ExamineFolderCommand(IFolder folder, CommandDataReceivedCallback callback)
     : base(callback)
 {
     _parameters.Add(folder.FullEncodedPath);
     _parameterObjs.Add(folder);
     CommandString = String.Format("EXAMINE \"{0}\"", Parameters);
 }
        public CreateFolderCommand(string folderName, IFolder parentFolder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            System.Text.StringBuilder b = new System.Text.StringBuilder(folderName);
            for (int i = 0; i < b.Length; ++i)
            {
                if (b[i] == '+')
                    b[i] = '&';
                else if (b[i] == '&')
                    b[i] = '+';
            }
            folderName = b.ToString();
            byte[] utf7String = System.Text.Encoding.UTF7.GetBytes(folderName);
            folderName = System.Text.Encoding.ASCII.GetString(utf7String);
            folderName = folderName.Replace('/', ',').Replace('+', '&');

            string fullFolder = parentFolder != null
                                    ? String.Format("{0}/{1}", parentFolder.FullEncodedPath, folderName)
                                    : folderName;

            fullFolder = fullFolder.Replace("\"", "");

            _parameters.Add(fullFolder);
            CommandString = String.Format("CREATE \"{0}\"", fullFolder);
        }
Beispiel #10
0
        /// <summary>
        /// Create a custom command with no specific parameters
        /// </summary>
        /// <param name="cmdString"></param>
        /// <param name="optionalParams">Optional parameters to provide for this command</param>
        /// <param name="callback"></param>
        public CustomCommand(string cmdString, CommandDataReceivedCallback callback, params object[] optionalParams)
            : base(callback)
        {
            _parameterObjs.AddRange(optionalParams);

            CommandString = String.Format(cmdString, optionalParams);
        }
Beispiel #11
0
        /// <summary>
        /// Create a new MessageListCommand for the specified folder
        /// </summary>
        /// <param name="folder"></param>
        /// <param name="callback"></param>
        public MessageListCommand(IFolder folder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            _parameterObjs.Add(folder);

            CommandString = String.Format("UID SEARCH all");
        }
Beispiel #12
0
        /// <summary>
        /// Generates a new FolderListCommand specifying the root folder
        /// </summary>
        /// <param name="rootFolder"></param>
        /// <param name="callback"></param>
        public FolderListCommand(string rootFolder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            _parameters.Add(rootFolder);

            CommandString = String.Format("LIST {0} \"*\"", Parameters);
        }
Beispiel #13
0
 /// <summary>
 /// Initialize common fields
 /// </summary>
 protected BaseCommand(CommandDataReceivedCallback callback)
 {
     _parameters         = new List <string>();
     _parameterObjs      = new List <object>();
     _commandString      = "";
     CommandDataReceived = callback;
 }
Beispiel #14
0
 /// <summary>
 /// Create a new Search command using the specified criteria
 /// </summary>        
 /// <param name="criteria"></param>
 /// <param name="callback"></param>
 public SearchCommand(SearchCriteria criteria, CommandDataReceivedCallback callback)
     : base(callback)
 {
     _parameters.Add(criteria.ToString());
     _parameterObjs.Add(criteria);
     
     CommandString = String.Format("UID SEARCH {0}", criteria.ToString());
 }
Beispiel #15
0
        /// <summary>
        /// Create a new Search command using the specified criteria
        /// </summary>
        /// <param name="criteria"></param>
        /// <param name="callback"></param>
        public SearchCommand(SearchCriteria criteria, CommandDataReceivedCallback callback)
            : base(callback)
        {
            _parameters.Add(criteria.ToString());
            _parameterObjs.Add(criteria);

            CommandString = String.Format("UID SEARCH {0}", criteria.ToString());
        }
        /// <summary>
        /// Create a new message structure command
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="callback"></param>
        public MessageStructureCommand(IMessage msg, CommandDataReceivedCallback callback)
            : base(callback)
        {
            _parameters.Add(msg.UID.ToString());
            _parameterObjs.Add(msg);

            CommandString = String.Format("UID FETCH {0} BODYSTRUCTURE", Parameters);
        }
        /// <summary>
        /// Create a new message structure command
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="callback"></param>
        public MessageStructureCommand(IMessage msg, CommandDataReceivedCallback callback)
            : base(callback)
        {
            _parameters.Add(msg.UID.ToString());
            _parameterObjs.Add(msg);

            CommandString = String.Format("UID FETCH {0} BODYSTRUCTURE", Parameters);
        }
Beispiel #18
0
        /// <summary>
        /// Generate a new LoginCommand
        /// </summary>
        /// <param name="username">The username of the account</param>
        /// <param name="password">The password of the account</param>
        /// <param name="callback"></param>
        public LoginCommand(string username, string password, CommandDataReceivedCallback callback)
            : base(callback)
        {
            _parameters.Add(username);
            _parameters.Add(password);

            CommandString = String.Format("LOGIN \"{0}\" \"{1}\"", Parameters);
        }
Beispiel #19
0
        /// <summary>
        /// Generate a new LoginCommand
        /// </summary>
        /// <param name="username">The username of the account</param>
        /// <param name="password">The password of the account</param>
        /// <param name="callback"></param>
        public LoginCommand(string username, string password, CommandDataReceivedCallback callback) 
            : base(callback)
        {
            _parameters.Add(username);
            _parameters.Add(password);

            CommandString = String.Format("LOGIN \"{0}\" \"{1}\"", Parameters);
        }
        public RenameFolderCommand(IFolder folder, string newName, CommandDataReceivedCallback callback)
            : base(callback)
        {
            string fullNewName = folder.Parent == null
                                     ? newName
                                     : String.Format("{0}/{1}", folder.Parent.FullPath, newName);

            CommandString = String.Format("RENAME \"{0}\" \"{1}\"", folder.FullPath, fullNewName);
        }
        /// <summary>
        /// Create a new message part command
        /// </summary>
        /// <param name="content"></param>
        /// <param name="callback"></param>
        public MessagePartCommand(IMessageContent content, CommandDataReceivedCallback callback)
            : base(callback)
        {
            _parameters.Add(content.Message.UID.ToString());
            _parameters.Add(content.PartID);
            _parameterObjs.Add(content);

            CommandString = String.Format("UID FETCH {0} BODY[{1}]", Parameters);
        }
Beispiel #22
0
        public MessageFlagCommand(IMessage msg, CommandDataReceivedCallback callback) : base(callback)
        {
            if (msg == null) return;

            _parameters.Add(msg.UID.ToString());
            _parameterObjs.Add(msg);

            CommandString = String.Format("UID FETCH {0} FLAGS", Parameters);
        }
Beispiel #23
0
        public RenameFolderCommand(IFolder folder, string newName, CommandDataReceivedCallback callback)
            : base(callback)
        {
            string fullNewName = folder.Parent == null
                                     ? newName
                                     : String.Format("{0}/{1}", folder.Parent.FullPath, newName);

            CommandString = String.Format("RENAME \"{0}\" \"{1}\"", folder.FullPath, fullNewName);
        }
Beispiel #24
0
        /// <summary>
        /// Create a new message part command
        /// </summary>
        /// <param name="content"></param>
        /// <param name="callback"></param>
        public MessagePartCommand(IMessageContent content, CommandDataReceivedCallback callback)
            : base(callback)
        {
            _parameters.Add(content.Message.UID.ToString());
            _parameters.Add(content.PartID);
            _parameterObjs.Add(content);

            CommandString = String.Format("UID FETCH {0} BODY[{1}]", Parameters);
        }
Beispiel #25
0
        /// <summary>
        /// Appends a message to the current mailbox
        /// </summary>
        /// <param name="flags"></param>
        /// <param name="parentFolder"></param>
        /// <param name="callback"></param>
        /// <returns></returns>
        public AppendCommand(string eml, string flags, IFolder parentFolder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            string fullFolder = parentFolder.FullEncodedPath;
            fullFolder = fullFolder.Replace("\"", "");

            _parameters.Add(fullFolder);
            CommandData = eml;
            CommandString = String.Format("APPEND \"{0}\" (\\Seen {1}) {{{2}}}", fullFolder, flags, Encoding.ASCII.GetBytes(CommandData.ToCharArray()).GetLength(0) - 2);
        }
Beispiel #26
0
        public MoveFolderCommand(IFolder folder, IFolder parentFolder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            string newFolder = parentFolder == null
                                   ?
                                       folder.Name
                                   : String.Format("{0}/{1}", parentFolder.FullPath, folder.Name);

            CommandString = String.Format("RENAME \"{0}\" \"{1}\"", folder.FullPath, newFolder);
        }
        public MoveFolderCommand(IFolder folder, IFolder parentFolder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            string newFolder = parentFolder == null
                                   ?
                               folder.Name
                                   : String.Format("{0}/{1}", parentFolder.FullPath, folder.Name);

            CommandString = String.Format("RENAME \"{0}\" \"{1}\"", folder.FullPath, newFolder);
        }
        /// <summary>
        /// Create a new MessageHeaderCommand for the specified message
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="callback"></param>
        public MessageHeaderCommand(IMessage msg, CommandDataReceivedCallback callback)
            : base(callback)
        {
            if (msg == null)
                throw new ArgumentNullException("msg","MessageHeaderCommand, msg cannot be null");
            
            _parameters.Add(msg.UID.ToString());
            _parameterObjs.Add(msg);

            CommandString = String.Format("UID FETCH {0} (FLAGS BODY.PEEK[HEADER])", Parameters);
        }
Beispiel #29
0
        /// <summary>
        /// Appends a message to the current mailbox
        /// </summary>
        /// <param name="flags"></param>
        /// <param name="parentFolder"></param>
        /// <param name="callback"></param>
        /// <returns></returns>
        public AppendCommand(string eml, string flags, IFolder parentFolder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            string fullFolder = parentFolder.FullEncodedPath;

            fullFolder = fullFolder.Replace("\"", "");

            _parameters.Add(fullFolder);
            CommandData   = eml;
            CommandString = String.Format("APPEND \"{0}\" (\\Seen {1}) {{{2}}}", fullFolder, flags, Encoding.ASCII.GetBytes(CommandData.ToCharArray()).GetLength(0) - 2);
        }
Beispiel #30
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CopyMessageCommand"/> class.
        /// </summary>
        /// <param name="msg">The message to copy.</param>
        /// <param name="destFolder">The destination folder.</param>
        /// <param name="callback">The callback to call when operation completed.</param>
        public CopyMessageCommand(IMessage msg, IFolder destFolder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            //  UID COPY 4963 "DestFolder"
            const string cmd = "UID COPY {0} \"{1}\"";
            _parameters.Add(msg.UID.ToString());
            _parameters.Add(destFolder.FullEncodedPath);
            _parameterObjs.Add(msg);

            CommandString = String.Format(cmd, Parameters);
        }
Beispiel #31
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CopyMessageCommand"/> class.
        /// </summary>
        /// <param name="msg">The message to copy.</param>
        /// <param name="destFolder">The destination folder.</param>
        /// <param name="callback">The callback to call when operation completed.</param>
        public CopyMessageCommand(IMessage msg, IFolder destFolder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            //  UID COPY 4963 "DestFolder"
            const string cmd = "UID COPY {0} \"{1}\"";

            _parameters.Add(msg.UID.ToString());
            _parameters.Add(destFolder.FullEncodedPath);
            _parameterObjs.Add(msg);

            CommandString = String.Format(cmd, Parameters);
        }
Beispiel #32
0
        public MessageFlagCommand(IMessage msg, CommandDataReceivedCallback callback) : base(callback)
        {
            if (msg == null)
            {
                return;
            }

            _parameters.Add(msg.UID.ToString());
            _parameterObjs.Add(msg);

            CommandString = String.Format("UID FETCH {0} FLAGS", Parameters);
        }
        /// <summary>
        /// Create a new MessageHeaderCommand for all messages inside a folder
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="callback"></param>
        public MessageHeaderCommand(IFolder folder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            if (folder == null)
                throw new ArgumentNullException("folder", "MessageHeaderCommand, folder cannot be null");

            //_parameters.Add(msg.UID.ToString());
            _parameters.Add("1:*");
            _parameterObjs.Add(folder.Messages);

            CommandString = String.Format("UID FETCH {0} (FLAGS BODY.PEEK[HEADER])", Parameters);
        }
        public CreateFolderCommand(string folderName, IFolder parentFolder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            string fullFolder = parentFolder != null
                                    ? String.Format("{0}/{1}", parentFolder.FullPath, folderName)
                                    : folderName;

            fullFolder = fullFolder.Replace("\"", "");

            _parameters.Add(fullFolder);
            CommandString = String.Format("CREATE \"{0}\"", fullFolder);
        }
        /// <summary>
        /// Create a new ChangeFlag command
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="flag"></param>
        /// <param name="value"></param>
        /// <param name="callback"></param>
        public ChangeFlagCommand(IMessage msg, MessageFlag flag, bool value, CommandDataReceivedCallback callback)
            : base(callback)
        {
            //  UID STORE 4963 -FLAGS (\Seen)
            const string cmd = "UID STORE {0} {1}FLAGS (\\{2})";
            _parameters.Add(msg.UID.ToString());
            _parameters.Add(value ? "+":"-");
            _parameters.Add(flag.ToString());
            _parameterObjs.Add(msg);

            CommandString = String.Format(cmd, Parameters);
        }
        /// <summary>
        /// Create a new ChangeFlag command
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="flag"></param>
        /// <param name="value"></param>
        /// <param name="callback"></param>
        public ChangeFlagCommand(IMessage msg, string flag, bool value, CommandDataReceivedCallback callback)
            : base(callback)
        {
            //  UID STORE 4963 -FLAGS (\Seen)
            const string cmd = "UID STORE {0} {1}FLAGS ({2})";

            _parameters.Add(msg.UID.ToString());
            _parameters.Add(value ? "+" : "-");
            _parameters.Add(flag);
            _parameterObjs.Add(msg);

            CommandString = String.Format(cmd, Parameters);
        }
        /// <summary>
        /// Create a new MessageHeaderCommand for the specified message
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="callback"></param>
        public MessageHeaderCommand(IMessage msg, CommandDataReceivedCallback callback)
            : base(callback)
        {
            if (msg == null)
            {
                throw new ArgumentNullException("msg", "MessageHeaderCommand, msg cannot be null");
            }

            _parameters.Add(msg.UID.ToString());
            _parameterObjs.Add(msg);

            CommandString = String.Format("UID FETCH {0} (FLAGS BODY.PEEK[HEADER])", Parameters);
        }
        /// <summary>
        /// Create a new MessageHeaderCommand for all messages inside a folder
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="callback"></param>
        public MessageHeaderCommand(IFolder folder, CommandDataReceivedCallback callback)
            : base(callback)
        {
            if (folder == null)
            {
                throw new ArgumentNullException("folder", "MessageHeaderCommand, folder cannot be null");
            }

            //_parameters.Add(msg.UID.ToString());
            _parameters.Add("1:*");
            _parameterObjs.Add(folder.Messages);

            CommandString = String.Format("UID FETCH {0} (FLAGS BODY.PEEK[HEADER])", Parameters);
        }
Beispiel #39
0
 public DeleteFolderCommand(IFolder deadFolder, CommandDataReceivedCallback callback)
     : base(callback)
 {
     CommandString = String.Format("DELETE \"{0}\"", deadFolder.FullPath);
 }
Beispiel #40
0
 /// <summary>
 /// Create a new HeartBeatCommand
 /// </summary>
 public HeartBeatCommand(CommandDataReceivedCallback callback) 
     : base(callback)
 {
     CommandString = "NOOP";
 }
Beispiel #41
0
 /// <summary>
 /// Create a new HeartBeatCommand
 /// </summary>
 public HeartBeatCommand(CommandDataReceivedCallback callback)
     : base(callback)
 {
     CommandString = "NOOP";
 }
 /// <summary>
 /// Create new Capability command
 /// </summary>
 public CapabilityCommand(CommandDataReceivedCallback callback)
     : base(callback)
 {
     CommandString = "CAPABILITY";
 }
Beispiel #43
0
 public ExpungeCommand(CommandDataReceivedCallback callback)
     : base(callback)
 {
     CommandString = "EXPUNGE";
 }
 public DeleteFolderCommand(IFolder deadFolder, CommandDataReceivedCallback callback)
     : base(callback)
 {
     CommandString = String.Format("DELETE \"{0}\"", deadFolder.FullPath);
 }
Beispiel #45
0
 /// <summary>
 /// Create new Capability command
 /// </summary>
 public CapabilityCommand(CommandDataReceivedCallback callback)
     : base(callback)
 {
     CommandString = "CAPABILITY";
 }
Beispiel #46
0
 public ExpungeCommand(CommandDataReceivedCallback callback)
     : base(callback)
 {
     CommandString = "EXPUNGE";
 }