Beispiel #1
0
        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)));
        }
Beispiel #3
0
        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));
        }