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; } } }
public async Task <RoundState[]> Play(string gameId, [FromBody] IndividualPlay play) { await _service.Play(gameId, play); return(await _service.GetGameState(gameId)); }