예제 #1
0
        public ActionResult Play(HomePageViewModel viewModel)
        {
            if (!Enum.IsDefined(typeof(Region), viewModel.PlayerInput.Region) ||
                string.IsNullOrWhiteSpace(viewModel.PlayerInput.SummonerName))
            {
                return(RedirectToAction("Index", new { error = "Something is wrong with the provided summoner name or region." }));
            }

            var region              = (Region)viewModel.PlayerInput.Region;
            var summonerName        = viewModel.PlayerInput.SummonerName;
            var trimmedSummonerName = Regex.Replace(summonerName, @"\s+", "");

            var apiConnection = new RiotAPIConnection();

            var summonerRequest = new GetSummonerByNameRequest(region, summonerName);
            var summonersResult = apiConnection.PerformRequest <Dictionary <string, Summoner> >(summonerRequest);

            if (summonersResult.isSuccess && summonersResult.value != null && summonersResult.value.ContainsKey(trimmedSummonerName))
            {
                var summoner = summonersResult.value[trimmedSummonerName];
                return(RedirectToAction("Play", "Game", new { region = region, summonerId = summoner.id }));
            }
            else
            {
                return(RedirectToAction("Index", new { error = "Could not find Summoner." }));
            }
        }
예제 #2
0
        public async Task <IActionResult> GetByName([FromRoute] GetSummonerByNameRequest request)
        {
            var result = await _riotSummonerService.GetBySummonerName(request);

            return(result.Match <IActionResult>(
                       Ok,
                       notFound => NotFound(ErrorResponse.GenerateErrorResponse("summonerName", Errors.SummonerNotFound)),
                       error => StatusCode(StatusCodes.Status500InternalServerError, ErrorResponse.GenerateErrorResponse(null, Errors.UnexpectedError))
                       ));
        }
예제 #3
0
        public async Task <OneOf <GetSummonerByNameResult, GetSummonerByNameNotFound, GetSummonerByNameError> > GetBySummonerName(GetSummonerByNameRequest request)
        {
            try
            {
                GetSummonerByNameResponse response = await _riotApi.GetSummonerByName(request.SummonerName);

                return(new GetSummonerByNameResult
                {
                    AccountId = response.AccountId,
                    ProfileIconId = response.ProfileIconId,
                    RevisionDate = response.RevisionDate,
                    Name = response.Name,
                    Id = response.Id,
                    PUuid = response.Puuid,
                    SummonerLevel = response.SummonerLevel
                });
            }
            catch (ApiException exception)
            {
                return(exception.StatusCode switch
                {
                    HttpStatusCode.NotFound => new GetSummonerByNameNotFound(),
                    _ => new GetSummonerByNameError(new[] { Errors.UnexpectedError }),
                });