Пример #1
0
        public async Task Play(string gameId, IndividualPlay play)
        {
            var validationParameters = new TokenValidationParameters
            {
                ValidateIssuer   = true,
                ValidIssuer      = "ShiFuMi",
                ValidateAudience = true,
                ValidAudience    = "ShiFuMi",
                ValidateLifetime = true,
                IssuerSigningKey = _credentials.Value.Key
            };

            var principal = _jwtTokenHandler.Value.ValidateToken(play.Token, validationParameters, out _);

            if (principal.FindFirstValue("game") != gameId)
            {
                throw new InvalidOperationException("You don't have the right to access this game!");
            }

            var record = (await _client.GetAsync <GameRecord>(gameId)).Source;

            switch (principal.FindFirstValue("playerID"))
            {
            case "0":
            {
                if (record.Player1Plays.Count < _settings.RoundsCount)
                {
                    record.Player1Plays.Add(play.Play);
                    await _client.IndexDocumentAsync(record);
                }
                break;
            }

            case "1":
            {
                if (record.Player2Plays.Count < _settings.RoundsCount)
                {
                    record.Player2Plays.Add(play.Play);
                    await _client.IndexDocumentAsync(record);
                }
                break;
            }

            default:
            {
                break;
            }
            }
        }
Пример #2
0
        public async Task <RoundState[]> Play(string gameId, [FromBody] IndividualPlay play)
        {
            await _service.Play(gameId, play);

            return(await _service.GetGameState(gameId));
        }