Пример #1
0
 public async Task ShouldAcceptLogsCommand()
 {
     await TestBasicCommandUsage(
         "logs",
         (files, starter) => LogsCommand
         .WithFilesAndStarter(starter, files)
         .FromAllServices()
         .Build());
 }
Пример #2
0
 public ToolsCommand(OptionsCommand optionsCommand, LanguageCommand languageCommand, FullScreenCommand fullScreenCommand, BenchmarkCommand benchmarkCommand, LogsCommand logsCommand) : base(MenuStrings.toolsToolStripMenuItem_Text)
 {
     ChildrenCommands = new List <IToolbarCommand>
     {
         optionsCommand,
         languageCommand,
         fullScreenCommand,
         null,
         benchmarkCommand,
         null,
         logsCommand
     };
 }
Пример #3
0
        internal async Task <ReadOnlyCollection <LCIMMessage> > QueryMessages(string convId,
                                                                              LCIMMessageQueryEndpoint start      = null,
                                                                              LCIMMessageQueryEndpoint end        = null,
                                                                              LCIMMessageQueryDirection direction = LCIMMessageQueryDirection.NewToOld,
                                                                              int limit       = 20,
                                                                              int messageType = 0)
        {
            LogsCommand logs = new LogsCommand {
                Cid = convId
            };

            if (start != null)
            {
                logs.T         = start.SentTimestamp;
                logs.Mid       = start.MessageId;
                logs.TIncluded = start.IsClosed;
            }
            if (end != null)
            {
                logs.Tt         = end.SentTimestamp;
                logs.Tmid       = end.MessageId;
                logs.TtIncluded = end.IsClosed;
            }
            logs.Direction = direction == LCIMMessageQueryDirection.NewToOld ?
                             LogsCommand.Types.QueryDirection.Old : LogsCommand.Types.QueryDirection.New;
            logs.Limit = limit;
            if (messageType != 0)
            {
                logs.Lctype = messageType;
            }
            GenericCommand request = NewCommand(CommandType.Logs, OpType.Open);

            request.LogsMessage = logs;
            GenericCommand response = await Connection.SendRequest(request);

            // 反序列化聊天记录
            return(response.LogsMessage.Logs.Select(item => {
                LCIMMessage message;
                if (item.Bin)
                {
                    // 二进制消息
                    byte[] bytes = Convert.FromBase64String(item.Data);
                    message = LCIMBinaryMessage.Deserialize(bytes);
                }
                else
                {
                    // 类型消息
                    message = LCIMTypedMessage.Deserialize(item.Data);
                }
                message.ConversationId = convId;
                message.Id = item.MsgId;
                message.FromClientId = item.From;
                message.SentTimestamp = item.Timestamp;
                message.DeliveredTimestamp = item.AckAt;
                message.ReadTimestamp = item.ReadAt;
                message.PatchedTimestamp = item.PatchTimestamp;
                message.MentionAll = item.MentionAll;
                message.MentionIdList = item.MentionPids.ToList();
                message.Mentioned = message.MentionAll ||
                                    message.MentionIdList.Contains(Client.Id);
                return message;
            }).ToList().AsReadOnly());
        }