public ReadOnlyCollection <IFile> GetByAttribute(FileComparisonAttribute attribute,
                                                         FileComparisonOperator @operator, int value)
        {
            VersionVerifier.EnsureVersion(Session);

            const string FILTER_FILES_BY_COMMAND =
                @"<MEDIA><FOLDER  guid=""{0}"" subdirguid=""{0}""><FILES action=""list"" view=""thumbnail"" sectioncount=""30"" maxfilesize=""0""  command=""{1}"" op=""{2}"" value=""{3}""  startcount=""1"" orderby=""name""/></FOLDER></MEDIA>";

            var rqlString = FILTER_FILES_BY_COMMAND.RQLFormat(Folder, ComparisonAttributeToString(attribute),
                                                              ComparisonOperatorToString(@operator), value);

            return(RetrieveFiles(rqlString).AsReadOnly());
        }
Esempio n. 2
0
        private void InitializeUserData()
        {
            var messageData = GetMessage();
            var msg         = new ConnectionMessage(messageData);

            if (!VersionVerifier.Verify(msg.Hash))
            {
                Stream.Write(new PostCodeMessage(11).Serialize());
                server.RemoveConnection(Id);

                return;
            }

            SendId();
            server.BroadcastMessage(msg, Id);
        }
        public override byte[] Serialize()
        {
            byte[] data           = null;
            var    connectionData = Serializer.SerializeString(Connection.ToString());
            var    userData       = Sender.Serialize();

            switch (Connection)
            {
            case Connection.Connect:
            {
                data = new byte[sizeof(int) + connectionData.Length + userData.Length + VersionVerifier.GetHash().Length];

                using var stream = new MemoryStream(data);
                using var writer = new BinaryWriter(stream);

                writer.Write(PostCode);
                writer.Write(connectionData);
                writer.Write(userData);
                writer.Write(VersionVerifier.GetHash());

                break;
            }

            case Connection.Disconnect:
            {
                data = new byte[sizeof(int) + connectionData.Length + userData.Length];

                using var stream = new MemoryStream(data);
                using var writer = new BinaryWriter(stream);

                writer.Write(PostCode);
                writer.Write(connectionData);
                writer.Write(userData);

                break;
            }
            }

            return(data);
        }
Esempio n. 4
0
        private static void ParseCommand(string command)
        {
            var input = _network.GetInputType(command);

            switch (input)
            {
            //If this is not a command
            case Input.Message:
                _network.SendMessage(new SimpleMessage(_network.User, command));
                break;

            case Input.Command:
            {
                string[] args = _network.GetCommandArgs(command);

                switch (args[0])
                {
                case { } s when(s == "join" || s == "connect"):
                {
                    if (_network.IsConnectedToServer())                         //So if you try reconnect and you already have session
                    {
                        _network.Cmd.WriteLine("You need to disconnect first"); //You need ro disconnect)

                        return;
                    }

                    if (_network.TryJoin(args))
                    {
                        _connectionSound.TryPlay();
                    }

                    break;
                }

                case { } s when(s == "create" || s == "room"):
                {
                    if (args.Length == 2)
                    {
                        if (_network.TryCreateRoom(args[1]))
                        {
                            _connectionSound?.TryPlay();
                        }
                    }

                    break;
                }

                // ReSharper disable once StringLiteralTypo
                case { } s when(s == "disconnect" || s == "dconnect"):
                {
                    if (args.Length == 1)
                    {
                        _network.TryDisconnect();
                    }
                    break;
                }

                case { } s when(s == "clear" || s == "clr"):
                {
                    if (args.Length == 1)
                    {
                        _network.Cmd.Clear();
                    }
                    break;
                }

                case { } s when(s == "color"):
                {
                    if (args.Length != 2)
                    {
                        return;
                    }
                    _network.User.SetColor(ColorParser.GetColorFromString(args[1]));
                    _network.SendMessage(new UserDataMessage(Method.Send, _network.User));

                    break;
                }

                case { } s when(s == "hash"):
                {
                    if (args.Length == 1)
                    {
                        _network.Cmd.WriteLine(VersionVerifier.GetStringHash());
                    }
                    break;
                }
                }

                break;
            }

            default:
                throw new ArgumentOutOfRangeException();
            }
        }