Пример #1
0
        protected override CompletionResponse Behaviour()
        {
            uint          commandId = base._dispatcher.SendCommand(string.Format("SELECT \"{0}\"", base.mailbox), this.filter);
            IMAP4Response response  = base._dispatcher.GetResponse(commandId);

            while (!response.IsCompletionResponse())
            {
                base.ProcessResponse(response);
                response = base._dispatcher.GetResponse(commandId);
            }
            CompletionResponse response2 = new CompletionResponse(response.Response);

            if (response2.CompletionResult == ECompletionResponseType.OK)
            {
                if (!base._existsRecieved)
                {
                    throw new ExpectedResponseException("Expected * <n> EXISTS");
                }
                if (!base._recentRecieved)
                {
                    throw new ExpectedResponseException("Expected * <n> RECENT");
                }
                if (!base._flagsRecieved)
                {
                    throw new ExpectedResponseException("Expected * FLAGS (list)");
                }
            }
            base.ProcessCompletionResponse(response2);
            return(response2);
        }
        protected override CompletionResponse Behaviour()
        {
            uint commandId = base._dispatcher.SendCommand("AUTHENTICATE LOGIN");

            if (base._dispatcher.GetResponse(commandId).Type != EIMAP4ResponseType.Continuation)
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            base._dispatcher.SendContinuationCommand(base.GetBase64String(base._username));
            if (base._dispatcher.GetResponse(commandId).Type != EIMAP4ResponseType.Continuation)
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            base._dispatcher.SendContinuationCommand(base.GetBase64String(base._password));
            IMAP4Response response = base._dispatcher.GetResponse(commandId);

            if (!CompletionResponse.IsCompletionResponse(response.Response))
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            CompletionResponse response2 = new CompletionResponse(response.Response);

            if (response2.CompletionResult == ECompletionResponseType.NO)
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            return(response2);
        }
Пример #3
0
        protected override CompletionResponse Behaviour()
        {
            uint          commandId = base._dispatcher.SendCommand("LOGOUT", this.filter);
            IMAP4Response response  = base._dispatcher.GetResponse(commandId);

            if (CompletionResponse.IsCompletionResponse(response.Response))
            {
                CompletionResponse response2 = new CompletionResponse(response.Response);
                if (response2.CompletionResult != ECompletionResponseType.BAD)
                {
                    throw new UnexpectedResponseException("Unexpected response");
                }
                return(response2);
            }
            if ((response.Name != "BYE") || (response.Type != EIMAP4ResponseType.Untagged))
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            response = base._dispatcher.GetResponse(commandId);
            if (!CompletionResponse.IsCompletionResponse(response.Response))
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            CompletionResponse response3 = new CompletionResponse(response.Response);

            if (response3.CompletionResult == ECompletionResponseType.NO)
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            return(response3);
        }
Пример #4
0
        public static async Task <CompletionResponse> TranslateAsync(this CompletionResponse response, OmniSharpWorkspace workspace, CompletionRequest request)
        {
            foreach (var item in response.Items)
            {
                if (item.TextEdit is null)
                {
                    continue;
                }

                var(_, textEdit) = await item.TextEdit.TranslateAsync(workspace, request.FileName);

                item.TextEdit = textEdit;

                List <LinePositionSpanTextChange> additionalTextEdits = null;

                foreach (var additionalTextEdit in item.AdditionalTextEdits ?? Enumerable.Empty <LinePositionSpanTextChange>())
                {
                    var(_, change) = await additionalTextEdit.TranslateAsync(workspace, request.FileName);

                    // Due to the fact that AdditionalTextEdits return the complete buffer, we can't currently use that in Cake.
                    // Revisit when we have a solution. At this point it's probably just best to remove AdditionalTextEdits.
                    if (change.StartLine < 0)
                    {
                        continue;
                    }

                    additionalTextEdits ??= new List <LinePositionSpanTextChange>();
                    additionalTextEdits.Add(change);
                }

                item.AdditionalTextEdits = additionalTextEdits;
            }

            return(response);
        }
Пример #5
0
 /// <summary>
 /// Deletes the specified message.
 /// </summary>
 /// <param name="mailbox">The mailbox to delete from.</param>
 /// <param name="messagePaths">The message paths to delete.</param>
 /// <param name="response">The response.</param>
 /// <returns>The response type.</returns>
 protected override CommandResponseType DeleteMessageCommand(Mailbox mailbox, Dictionary <string, string> messagePaths, out string response)
 {
     try
     {
         // Email servers dont hav an outbox
         if (mailbox.Folder == MailboxFolders.Outbox)
         {
             response = string.Empty;
             return(CommandResponseType.Ok);
         }
         // Any other mailbox
         else
         {
             SequenceSet sequenceSet = new SequenceSet(messagePaths.Keys.Select(o => new SequenceNumber(uint.Parse(o))));
             _client.MarkAsDeleted(sequenceSet, mailbox);
             CompletionResponse deleteResponse = _client.Delete(sequenceSet, mailbox);
             response = deleteResponse.Message;
             return(GetCommandResponseType(deleteResponse.CompletionResult));
         }
     }
     catch (Exception ex)
     {
         response = ex.ToString();
         return(CommandResponseType.Bad);
     }
 }
Пример #6
0
 protected void ProcessCompletionResponse(CompletionResponse response)
 {
     this._access = EIMAP4MailBoxAccessType.Default;
     if (((response.CompletionResult == ECompletionResponseType.OK) && (response.Message != "")) && (response.Message[0] == '['))
     {
         int index = response.Message.IndexOf(']');
         if (index != -1)
         {
             string str = response.Message.Substring(0, index + 1);
             if (str == "[READ-WRITE]")
             {
                 this._access = EIMAP4MailBoxAccessType.ReadWrite;
             }
             else if (str == "[READ-ONLY]")
             {
                 this._access = EIMAP4MailBoxAccessType.ReadOnly;
             }
             else
             {
                 this._access = EIMAP4MailBoxAccessType.Default;
             }
             this._accessRecieved = true;
         }
     }
 }
Пример #7
0
        protected override CompletionResponse Behaviour()
        {
            IMAP4Response response;
            string        flagSetMode = GetFlagSetMode(this._mode);
            string        command     = string.Format("UID STORE {0} {1}FLAGS{2} ({3})", new object[] { this._sequence, flagSetMode, ".SILENT", JoinFlags(this._flags) });
            uint          commandId   = base._dispatcher.SendCommand(command);

            do
            {
                response = base._dispatcher.GetResponse(commandId);
            }while (!CompletionResponse.IsCompletionResponse(response.Response));
            return(new CompletionResponse(response.Response));
        }
Пример #8
0
 /// <summary>
 /// Deletes a mailbox.
 /// </summary>
 /// <param name="mailbox">The mailbox.</param>
 /// <param name="response">The response.</param>
 /// <returns>The response type.</returns>
 protected override CommandResponseType RemoveMailboxCommand(Mailbox mailbox, out string response)
 {
     try
     {
         CompletionResponse removeMailboxResponse = _client.DeleteMailbox(mailbox);
         response = removeMailboxResponse.Message;
         return(GetCommandResponseType(removeMailboxResponse.CompletionResult));
     }
     catch (Exception ex)
     {
         response = ex.ToString();
         return(CommandResponseType.Bad);
     }
 }
Пример #9
0
 /// <summary>
 /// Renames a mailbox.
 /// </summary>
 /// <param name="oldMailbox">The old mailbox.</param>
 /// <param name="renamedMailbox">The renamed mailbox.</param>
 /// <param name="response">The response.</param>
 /// <returns>The response type.</returns>
 protected override CommandResponseType RenameMailboxCommand(Mailbox oldMailbox, Mailbox renamedMailbox, out string response)
 {
     try
     {
         CompletionResponse renameMailboxResponse = (renamedMailbox.IsSystem || renamedMailbox.IsReserved ? new CompletionResponse("0 OK SUCCESS") : _client.RenameMailbox(oldMailbox, renamedMailbox.DisplayName));
         response = renameMailboxResponse.Message;
         return(GetCommandResponseType(renameMailboxResponse.CompletionResult));
     }
     catch (Exception ex)
     {
         response = ex.ToString();
         return(CommandResponseType.Bad);
     }
 }
Пример #10
0
 /// <summary>
 /// Marks a message as unflagged.
 /// </summary>
 /// <param name="mailbox">The mailbox.</param>
 /// <param name="message">The message to mark as unflagged.</param>
 /// <param name="response">The response.</param>
 /// <returns>The response type.</returns>
 protected override CommandResponseType MarkAsUnflaggedCommand(Mailbox mailbox, StructuredMessage message, out string response)
 {
     try
     {
         CompletionResponse markAsUnflaggedResponse = _client.MarkAsUnflagged(new SequenceNumber(uint.Parse(message.Uid)), mailbox);
         response = markAsUnflaggedResponse.Message;
         return(GetCommandResponseType(markAsUnflaggedResponse.CompletionResult));
     }
     catch (Exception ex)
     {
         response = ex.ToString();
         return(CommandResponseType.Bad);
     }
 }
Пример #11
0
 /// <summary>
 /// Logs out of the mail account.
 /// </summary>
 /// <param name="response">The response.</param>
 /// <returns>The response type.</returns>
 protected override CommandResponseType LogoutCommand(out string response)
 {
     try
     {
         CompletionResponse logoutResponse = _client.Logout();
         response = logoutResponse.Message;
         return(GetCommandResponseType(logoutResponse.CompletionResult));
     }
     catch (Exception ex)
     {
         response = ex.ToString();
         return(CommandResponseType.Bad);
     }
 }
Пример #12
0
 /// <summary>
 /// Saves a message to drafts folder.
 /// </summary>
 /// <param name="mailbox">The mailbox.</param>
 /// <param name="message">The message.</param>
 /// <param name="response">The response.</param>
 /// <param name="uid">The uid.</param>
 /// <returns>The response type.</returns>
 protected override CommandResponseType SaveToDraftsCommand(Mailbox mailbox, StructuredMessage message, out string response, out string uid)
 {
     try
     {
         CompletionResponse removeMailboxResponse = _client.Append(mailbox, message, out uid);
         response = removeMailboxResponse.Message;
         return(GetCommandResponseType(removeMailboxResponse.CompletionResult));
     }
     catch (Exception ex)
     {
         response = ex.ToString();
         uid      = string.Empty;
         return(CommandResponseType.Bad);
     }
 }
Пример #13
0
        protected override CompletionResponse Behaviour()
        {
            uint          commandId = base._dispatcher.SendCommand("EXAMINE " + base.mailbox, this.filter);
            IMAP4Response response  = base._dispatcher.GetResponse(commandId);

            while (!response.IsCompletionResponse())
            {
                base.ProcessResponse(response);
                response = base._dispatcher.GetResponse(commandId);
            }
            if (!base._unseenRecieved)
            {
                throw new ExpectedResponseException("Expected * OK [UNSEEN]");
            }
            if (!base._uidnextRecieved)
            {
                throw new ExpectedResponseException("Expected * OK [UIDNEXT <n>]");
            }
            if (!base._uidvalidityRecieved)
            {
                throw new ExpectedResponseException("Expected * OK [UIDVALIDITY <n>]");
            }
            if (!base._existsRecieved)
            {
                throw new ExpectedResponseException("Expected * <n> EXISTS");
            }
            if (!base._recentRecieved)
            {
                throw new ExpectedResponseException("Expected * <n> RECENT");
            }
            if (!base._flagsRecieved)
            {
                throw new ExpectedResponseException("Expected * FLAGS (list)");
            }
            if (!base._permanentFlagsRecieved)
            {
                throw new ExpectedResponseException("Expected * OK [PERMANENTFLAGS (list)]");
            }
            CompletionResponse response2 = new CompletionResponse(response.Response);

            base.ProcessCompletionResponse(response2);
            if (base._access == EIMAP4MailBoxAccessType.ReadWrite)
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            return(response2);
        }
Пример #14
0
        public static CompletionResponse GetCodeComplete(string filename, int col, int line, string data, YcmdProcesses p, out string commands)
        {
            //Create the request data to send.
            SimpleRequest req = new SimpleRequest();

            req.column_num     = col;
            req.line_num       = line;
            req.filepath       = filename;
            req.force_semantic = true;
            req.file_data      = new Dictionary <string, FileData>();
            req.file_data.Add(filename, GenerateFileData(data));
            //Send this data to the server and get a reply.
            CompletionResponse reply = YcmdController.SendYcmdRequest <CompletionResponse>("/completions", req, YcmdProcess.GetServer(p));

            commands = YcmdController.SendYcmdRequestRaw("/defined_subcommands", req, YcmdProcess.GetServer(p));
            return(reply);
        }
Пример #15
0
        protected override CompletionResponse Behaviour()
        {
            uint          commandId = base._dispatcher.SendCommand("STARTTLS");
            IMAP4Response response  = base._dispatcher.GetResponse(commandId);

            if (!CompletionResponse.IsCompletionResponse(response.Response))
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            CompletionResponse response2 = new CompletionResponse(response.Response);

            if (response2.CompletionResult == ECompletionResponseType.NO)
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            return(response2);
        }
Пример #16
0
        /// <summary>
        /// Moves a list of messages from it's current mailbox to a specified mailbox.
        /// </summary>
        /// <param name="sourceMailbox">The source mailbox.</param>
        /// <param name="destinationMailbox">The destination mailbox.</param>
        /// <param name="messagePaths">The message paths to move.</param>
        /// <param name="response">The response.</param>
        /// <param name="newUids">The new uids.</param>
        /// <returns>The response type.</returns>
        protected override CommandResponseType MoveMessageCommand(Mailbox sourceMailbox, Mailbox destinationMailbox, Dictionary <string, string> messagePaths, out string response, out Dictionary <string, string> newUids)
        {
            newUids = new Dictionary <string, string>();

            try
            {
                SequenceSet        sequenceSet         = new SequenceSet(messagePaths.Keys.Select(o => new SequenceNumber(uint.Parse(o))));
                CompletionResponse moveMessageResponse = _client.Move(sequenceSet, sourceMailbox, destinationMailbox, out newUids);
                response = moveMessageResponse.Message;
                return(GetCommandResponseType(moveMessageResponse.CompletionResult));
            }
            catch (Exception ex)
            {
                response = ex.ToString();
                return(CommandResponseType.Bad);
            }
        }
Пример #17
0
 /// <summary>
 /// Marks a message as deleted.
 /// </summary>
 /// <param name="sourceMailbox">The source mailbox.</param>
 /// <param name="destinationMailbox">The destination mailbox.</param>
 /// <param name="message">The message to mark as undelete.</param>
 /// <param name="response">The response.</param>
 /// <param name="newId">The new id.</param>
 /// <returns>The response type.</returns>
 protected override CommandResponseType MarkAsDeletedCommand(Mailbox sourceMailbox, Mailbox destinationMailbox, StructuredMessage message, out string response, out string newId)
 {
     newId = null;
     try
     {
         Dictionary <string, string> newIds;
         CompletionResponse          markAsDeleteResponse = _client.MarkAsDeleted(new SequenceNumber(uint.Parse(message.Uid)), sourceMailbox, destinationMailbox, out newIds);
         response = markAsDeleteResponse.Message;
         newId    = newIds.Values.DefaultIfEmpty().First();
         return(GetCommandResponseType(markAsDeleteResponse.CompletionResult));
     }
     catch (Exception ex)
     {
         response = ex.ToString();
         newId    = string.Empty;
         return(CommandResponseType.Bad);
     }
 }
Пример #18
0
 /// <summary>
 /// Creates a new mailbox.
 /// </summary>
 /// <param name="mailbox">The mailbox.</param>
 /// <param name="response">The response.</param>
 /// <returns>The response type.</returns>
 protected override CommandResponseType AddMailboxCommand(Mailbox mailbox, out string response)
 {
     try
     {
         CompletionResponse addMailboxResponse = null;
         if (mailbox.Parent == null)
         {
             addMailboxResponse = _client.AddMailbox(mailbox.Name);
         }
         else
         {
             addMailboxResponse = _client.AddMailbox(mailbox.Name, mailbox.Parent);
         }
         response = addMailboxResponse.Message;
         return(GetCommandResponseType(addMailboxResponse.CompletionResult));
     }
     catch (Exception ex)
     {
         response = ex.ToString();
         return(CommandResponseType.Bad);
     }
 }
Пример #19
0
        protected override CompletionResponse Behaviour()
        {
            CompletionResponse response2;

            this.capabilities = new List <string>();
            uint          commandId = base._dispatcher.SendCommand("CAPABILITY", this.filter);
            IMAP4Response response  = base._dispatcher.GetResponse(commandId);

            if ((response.Name == "CAPABILITY") && (response.Type == EIMAP4ResponseType.Untagged))
            {
                if (response.Data.IndexOf(' ') != -1)
                {
                    string[] collection = response.Data.Substring(response.Name.Length + 1).Split(new char[] { ' ' });
                    this.capabilities = new List <string>(collection);
                }
                response = base._dispatcher.GetResponse(commandId);
                if (!CompletionResponse.IsCompletionResponse(response.Response))
                {
                    throw new UnexpectedResponseException("Unexpected response");
                }
                response2 = new CompletionResponse(response.Response);
                if (response2.CompletionResult == ECompletionResponseType.NO)
                {
                    throw new UnexpectedResponseException("Unexpected response");
                }
                return(response2);
            }
            if (!CompletionResponse.IsCompletionResponse(response.Response))
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            response2 = new CompletionResponse(response.Response);
            if (response2.CompletionResult != ECompletionResponseType.BAD)
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            return(response2);
        }
Пример #20
0
        protected override CompletionResponse Behaviour()
        {
            uint          commandId = base._dispatcher.SendCommand(this.command, this.filter);
            IMAP4Response response  = base._dispatcher.GetResponse(commandId);

            if ((response.Name == "STATUS") && (response.Type == EIMAP4ResponseType.Untagged))
            {
                int index = response.Data.IndexOf('(');
                int num3  = response.Data.IndexOf(')');
                if ((index != -1) && (num3 != -1))
                {
                    string[] strArray = response.Data.Substring(index + 1, (num3 - index) - 1).Split(new char[] { ' ' });
                    if ((strArray.Length % 2) != 0)
                    {
                        throw new UnexpectedResponseException("Unexpected response");
                    }
                    for (int i = 0; i < strArray.Length; i += 2)
                    {
                        string str2 = strArray[i];
                        if (str2 == "MESSAGES")
                        {
                            this.messages = int.Parse(strArray[i + 1]);
                        }
                        else if (str2 == "RECENT")
                        {
                            this.recent = int.Parse(strArray[i + 1]);
                        }
                        else if (str2 == "UIDNEXT")
                        {
                            this.uidnext = long.Parse(strArray[i + 1]);
                        }
                        else if (str2 == "UIDVALIDITY")
                        {
                            this.uidvalidity = long.Parse(strArray[i + 1]);
                        }
                        else
                        {
                            if (str2 != "UNSEEN")
                            {
                                throw new UnexpectedResponseException("Unexpected response");
                            }
                            this.unseen = int.Parse(strArray[i + 1]);
                        }
                    }
                }
            }
            else
            {
                if (!CompletionResponse.IsCompletionResponse(response.Response))
                {
                    throw new UnexpectedResponseException("Unexpected response");
                }
                return(new CompletionResponse(response.Response));
            }
            response = base._dispatcher.GetResponse(commandId);
            if (!CompletionResponse.IsCompletionResponse(response.Response))
            {
                throw new UnexpectedResponseException("Unexpected response");
            }
            return(new CompletionResponse(response.Response));
        }