Пример #1
0
        public bool Handle(IClientObject client, RequestObject request)
        {
            if (request.Module != "history")
            {
                return(false);
            }
            object[] args = JsonConvert.DeserializeObject <object[]>(request.Args.ToString());
            DateTime last;

            switch (request.Cmd)
            {
            case "room":
                string rstr = args[0] as string;
                string time = args[1].ToString();
                last = DateTime.Parse(time).ToUniversalTime();
                ChatMessage[] h = Manager.FindRoom(rstr)?.GetMessageHistoryTo(last);
                client.SendMessage(ResponseConstructor.GetRoomHistoryResponse(rstr, h));
                break;

            case "private":
                string user1 = (string)args[0];
                string user2 = (string)args[1];
                time = args[2].ToString();
                last = DateTime.Parse(time).ToUniversalTime();
                h    = HistoryDataprovider.GetPrivateHistory(user1, user2, last);
                client.SendMessage(ResponseConstructor.GetPrivateHistoryResponse(user2, h));
                break;

            default: break;
            }

            return(true);
        }
Пример #2
0
        public static void CloseRoom(string roomName)
        {
            RoomObject room = FindRoom(roomName);

            if (room != null)
            {
                Rooms.Remove(room);
                room.NewMessage -= HistoryDataprovider.AppendMessage;
                OnRoomDeleted(roomName);
            }
            HistoryDataprovider.RemoveHistory(roomName);
        }
Пример #3
0
        public RoomObject(string name, string creator)
        {
            Name    = name;
            Creator = creator;

            var history = HistoryDataprovider.GetHistory(name);

            if (history != null)
            {
                foreach (ChatMessage msg in history)
                {
                    Messages.AddLast(msg);
                }
            }
        }
Пример #4
0
        public bool Handle(IClientObject client, RequestObject request)
        {
            if (request.Module != "private")
            {
                return(false);
            }

            IClientObject recipient = Manager.FindClient(request.Cmd);

            if (recipient != null)
            {
                recipient.SendMessage(JsonConvert.SerializeObject(new RequestObject("private", null, request.Args)));
                ChatMessage msg = JsonConvert.DeserializeObject <ChatMessage>(request.Args.ToString());
                msg.TimeStamp = msg.TimeStamp.ToUniversalTime();
                HistoryDataprovider.AppendPrivateMessage(client.Username, recipient.Username, msg);
            }
            return(true);
        }