コード例 #1
0
        public async Task <PickupQueue> UpdateOperators(string queueName, string operators, SocketGuildUser user)
        {
            var queue = await _queueRepository.FindQueue(queueName, user.Guild.Id.ToString());

            if (queue == null)
            {
                return(null);
            }
            var isAdmin = user.GuildPermissions.Has(GuildPermission.Administrator);

            if (!isAdmin && queue.OwnerId != user.Id.ToString())
            {
                return(null);
            }

            var ops = OperatorParser.Parse(operators);

            if (ops?.ContainsKey("-teamsize") ?? false)
            {
                queue.TeamSize = int.Parse(ops["-teamsize"]?.FirstOrDefault() ?? "4");
            }
            if (ops?.ContainsKey("-rcon") ?? false)
            {
                queue.Rcon = true;
            }
            if (ops?.ContainsKey("-norcon") ?? false)
            {
                queue.Rcon = false;
            }
            if (ops?.ContainsKey("-coop") ?? false)
            {
                queue.IsCoop = true;
            }
            if (ops?.ContainsKey("-nocoop") ?? false)
            {
                queue.IsCoop = false;
            }
            if (ops?.ContainsKey("-host") ?? false)
            {
                queue.Host = ops["-host"]?.FirstOrDefault();
            }
            if (ops?.ContainsKey("-host") ?? false)
            {
                queue.Port = int.Parse(ops["-port"]?.FirstOrDefault() ?? "0");
            }
            if (ops?.ContainsKey("-game") ?? false)
            {
                queue.Games = ops["-game"];
            }

            queue.Updated = DateTime.UtcNow;

            queue = await SaveStaticQueueMessage(queue, user.Guild);

            await _queueRepository.UpdateQueue(queue);

            return(queue);
        }
コード例 #2
0
ファイル: JSONParser.cs プロジェクト: carkus/UnityPlanner
    public JSONParser()
    {
        typeParser      = TypeParser.Instance;
        predicateParser = PredicateParser.Instance;
        operatorParser  = OperatorParser.Instance;

        objectParser    = ObjectParser.Instance;
        initStateParser = StateParser.Instance;
        goalStateParser = StateParser.Instance;
    }
コード例 #3
0
 public OperatorParserTests()
 {
     _mockWordsFinderHelper = new Mock <IWordsFinderHelper>();
     _mockDigitsHelper      = new Mock <IDigitsHelper>();
     _operatorParser        = new OperatorParser(_mockWordsFinderHelper.Object,
                                                 _mockDigitsHelper.Object,
                                                 ExpectedMinRange,
                                                 ExpectedMaxRange, new Dictionary <string, int>
     {
         { ExpectedKnownWord, ExpectedMatchedDictionaryValue }
     });
 }
コード例 #4
0
        public void NullDictionaryExpectThrowParserExceptionIfWordFound()
        {
            const string unknownWord = "UnknownWord";

            _mockWordsFinderHelper.Setup(helper => helper.FindWords(unknownWord)).Returns(new[] { unknownWord });

            var localOperatorParser = new OperatorParser(_mockWordsFinderHelper.Object,
                                                         _mockDigitsHelper.Object,
                                                         ExpectedMinRange,
                                                         ExpectedMaxRange);

            Assert.Throws <ParserException>(() => localOperatorParser.ParseAllowedValues(unknownWord));
        }
コード例 #5
0
            protected override QueryParser OnCharacter(char character)
            {
                if (IsWhiteSpace(character))
                {
                    return(this);
                }

                QueryParser parser;

                switch (character)
                {
                case '=':
                    parser = Operator("=", value => visitor => visitor.VisitEquals(property, value));
                    break;

                case '!':
                    parser = Operator("!=", value => visitor => visitor.VisitDoesNotEqual(property, value));
                    break;

                case '<':
                    parser = Operator("<", value => visitor => visitor.VisitLessThan(property, value)).Or(
                        Operator("<=", value => visitor => visitor.VisitLessThanOrEqualTo(property, value)));
                    break;

                case '>':
                    parser = Operator(">", value => visitor => visitor.VisitGreaterThan(property, value)).Or(
                        Operator(">=", value => visitor => visitor.VisitGreaterThanOrEqualTo(property, value)));
                    break;

                case 'c':
                    parser = Operator("contains", value => visitor => visitor.VisitContains(property, value));
                    break;

                case 'e':
                    parser = new OperatorParser("exists",
                                                new BooleanParser(value => consumer(visitor => visitor.VisitExists(property, value))));
                    break;

                case 'd':
                    parser = Operator("derivedfrom", value => visitor => visitor.VisitDerivedFrom(property, value)).Or(
                        Operator("doesNotContain", value => visitor => visitor.VisitDoesNotContain(property, value)));
                    break;

                default:
                    throw new QueryParsingException(string.Format("Unexpected operator begining: {0}.", character));
                }

                return(parser.OnCharacter(character));
            }
コード例 #6
0
        public async Task <PickupQueue> Create(string queueName, int?teamSize, string operators, SocketGuildUser user)
        {
            var ops         = OperatorParser.Parse(operators);
            var rconEnabled = ops?.ContainsKey("-rcon") ?? true;

            if (ops?.ContainsKey("-norcon") == true)
            {
                rconEnabled = false;
            }

            var queue = new PickupQueue(user.Guild.Id.ToString(), queueName)
            {
                Name        = queueName,
                GuildId     = user.Guild.Id.ToString(),
                OwnerName   = PickupHelpers.GetNickname(user),
                OwnerId     = user.Id.ToString(),
                Created     = DateTime.UtcNow,
                Updated     = DateTime.UtcNow,
                TeamSize    = teamSize ?? 4,
                IsCoop      = ops?.ContainsKey("-coop") ?? false,
                Rcon        = rconEnabled,
                Subscribers = new List <Subscriber>
                {
                    new Subscriber {
                        Id = user.Id, Name = PickupHelpers.GetNickname(user)
                    }
                },
                Host  = ops?.ContainsKey("-host") ?? false ? ops["-host"]?.FirstOrDefault() : null,
                Port  = int.Parse((ops?.ContainsKey("-port") ?? false ? ops["-port"]?.FirstOrDefault() : null) ?? "0"),
                Games = ops?.ContainsKey("-game") ?? false ? ops["-game"] : Enumerable.Empty <string>(),
            };

            await _queueRepository.AddQueue(queue);

            queue = await _queueRepository.FindQueue(queue.Name, user.Guild.Id.ToString());

            queue = await SaveStaticQueueMessage(queue, user.Guild);

            await _queueRepository.UpdateQueue(queue);

            return(queue);
        }
コード例 #7
0
        public void CorrectOperatorIsReturned(string input, Type expectedType)
        {
            // Arrange

            var operators = new List <IOperator>
            {
                new SumOperator(),
                new DifferenceOperator()
            };

            var parser = new OperatorParser(operators);

            // Act

            var result = parser.Parse(input);

            // Assert

            Assert.That(result, Is.TypeOf(expectedType));
        }
コード例 #8
0
 public void TestParse__Null()
 {
     ArgumentNullException ex = Assert.Throws <ArgumentNullException>(delegate
     {
         OperatorParser.Parse(null, out string _);
     });