public async Task <HttpResponseData> Get( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "players")] HttpRequestData req) { // Verify authenticated user is present var subject = await authorize.TryGetSubject(req.Headers); if (subject == null) { return(req.CreateResponse(HttpStatusCode.Unauthorized)); } // Get and return all players of current user var players = mapper.Map <List <Player>, List <PlayerGetDto> >(await playerTable.Get(p => p.Creator == subject)); var results = await playerResultTable.Get(); var resultingPlayers = players.Select(p => { var result = results.FirstOrDefault(r => r.RowKey == p.Id.ToString()); if (result != null) { return(p with { LastMeasurement = result.LastMeasurement, AvgNumberOfShots = result.AvgNumberOfShots, StdDev = result.StdDev }); } return(p); }).ToList(); return(await CreateResponse(req, resultingPlayers)); }
public async Task <HttpResponseData> Me( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "users/me")] HttpRequestData req) { // Verify authenticated user is present var subject = await authorize.TryGetSubject(req.Headers); if (subject == null) { return(req.CreateResponse(HttpStatusCode.Unauthorized)); } var user = await usersTable.GetSingle(subject); if (user == null) { return(req.CreateResponse(HttpStatusCode.NotFound)); } return(await CreateResponse(req, mapper.Map <User, UserGetDto>(user))); }
public async Task <HttpResponseData> Test( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "players/{idString}/test")] HttpRequestData req, string idString) { // Verify authenticated user is present var subject = await authorize.TryGetSubject(req.Headers); if (subject == null) { return(req.CreateResponse(HttpStatusCode.Unauthorized)); } var(player, errorResponse) = await GetSingleOwning(req, idString, subject); if (player == null) { return(errorResponse !); } try { await gameClient.GetReadyForGame(player.WebApiUrl, 1, player.ApiKey); await gameClient.PlaySingleMoveInRandomGame(player.WebApiUrl, player.ApiKey); } catch (Exception ex) { var errorMessage = ex.GetFullDescription(); await playerLogTable.AddException(player.RowKey, player.WebApiUrl, errorMessage); return(await CreateDependencyError(req, errorMessage)); } await playerLogTable.Add(new(player.RowKey, player.WebApiUrl, $"Successfully tested player")); return(req.CreateResponse(HttpStatusCode.OK)); }