コード例 #1
0
        public void Run(ServerCommandArgs args)
        {
            var receivedContent = Serializer.Deserialize <MessageContent>(args.Message);

            if (receivedContent.File == null)
            {
                throw new ArgumentNullException("File");
            }

            if (string.IsNullOrEmpty(receivedContent.RoomName))
            {
                throw new ArgumentException("RoomName");
            }

            if (!RoomExists(receivedContent.RoomName, args.ConnectionId))
            {
                return;
            }

            using (var context = ServerModel.Get())
            {
                var room = context.Rooms[receivedContent.RoomName];

                if (!room.Users.Contains(args.ConnectionId))
                {
                    ServerModel.API.SendSystemMessage(args.ConnectionId, "Вы не входите в состав этой комнаты.");
                    return;
                }

                if (room.Files.FirstOrDefault(file => file.Equals(receivedContent.File)) == null)
                {
                    room.Files.Add(receivedContent.File);
                }

                var sendingContent = new ClientFilePostedCommand.MessageContent
                {
                    File     = receivedContent.File,
                    RoomName = receivedContent.RoomName
                };

                foreach (string user in room.Users)
                {
                    ServerModel.Server.SendMessage(user, ClientFilePostedCommand.Id, sendingContent);
                }
            }
        }
コード例 #2
0
        protected override void OnRun(MessageContent content, ServerCommandArgs args)
        {
            if (content.File == null)
            {
                throw new ArgumentNullException("File");
            }

            if (string.IsNullOrEmpty(content.RoomName))
            {
                throw new ArgumentException("RoomName");
            }

            if (!RoomExists(content.RoomName, args.ConnectionId))
            {
                return;
            }

            using (var context = ServerModel.Get())
            {
                var room = context.Rooms[content.RoomName];

                if (!room.Users.Contains(args.ConnectionId))
                {
                    ServerModel.Api.SendSystemMessage(args.ConnectionId, MessageId.RoomAccessDenied);
                    return;
                }

                if (room.Files.FirstOrDefault(file => file.Equals(content.File)) == null)
                {
                    room.Files.Add(content.File);
                }

                var sendingContent = new ClientFilePostedCommand.MessageContent
                {
                    File     = content.File,
                    RoomName = content.RoomName
                };

                foreach (string user in room.Users)
                {
                    ServerModel.Server.SendMessage(user, ClientFilePostedCommand.CommandId, sendingContent);
                }
            }
        }
コード例 #3
0
        protected override void OnRun(MessageContent content, CommandArgs args)
        {
            if (string.IsNullOrEmpty(content.RoomName))
            {
                throw new ArgumentException("content.RoomName");
            }

            if (content.File == null)
            {
                throw new ArgumentNullException("content.File");
            }

            using (var server = ServerModel.Get())
            {
                Room room;
                if (!TryGetRoom(server.Chat, content.RoomName, args.ConnectionId, out room))
                {
                    return;
                }

                if (!room.IsUserExist(args.ConnectionId))
                {
                    ServerModel.Api.Perform(new ServerSendSystemMessageAction(args.ConnectionId, SystemMessageId.RoomAccessDenied));
                    return;
                }

                if (!room.IsFileExist(content.File.Id))
                {
                    room.AddFile(new FileDescription(content.File));
                }

                var sendingContent = new ClientFilePostedCommand.MessageContent
                {
                    File     = content.File,
                    RoomName = content.RoomName
                };

                foreach (var user in room.Users)
                {
                    ServerModel.Server.SendMessage(user, ClientFilePostedCommand.CommandId, sendingContent);
                }
            }
        }