/// <summary>
        /// GETs a List of LeagueEntry objects from Riot's API and then deserializes it into a List of LeagueEntryModel objects.
        /// </summary>
        /// <returns>Returns a List of LeagueEntryModel objects.</returns>
        public async Task <List <LeagueEntryModel> > GetLeagueEntryModelsAsync()
        {
            var uri = GetUriFromEncryptedSummonerId();

            var json = await _httpClient.GetStringAsync(uri).ConfigureAwait(false);

            var contracts   = JsonConvert.DeserializeObject <List <LeagueEntryDto> >(json);
            var entryModels = new List <LeagueEntryModel>();

            foreach (var contract in contracts)
            {
                entryModels.Add(contract.ToLeagueEntryModel());
            }

            return(entryModels);

            #region Local Methods
            Uri GetUriFromEncryptedSummonerId()
            {
                // If API Path changes, modify string below.

                return(_uriFactory
                       .AddSegments($"/lol/league/v4/entries/by-summoner/{_encryptedSummonerId}")
                       .Create());
            }

            #endregion
        }
        private async Task <MatchTimelineDto> GetMatchTimelineDtoAsync()
        {
            Uri uri = GetUriFromMatchId();

            var json = await _httpClient.GetStringAsync(uri).ConfigureAwait(false);

            return(JsonConvert.DeserializeObject <MatchTimelineDto>(json));

            Uri GetUriFromMatchId()
            {
                return(_uriFactory
                       .AddSegments($"/lol/match/v4/timelines/by-match/{_matchId}")
                       .Create());
            }
        }
        /// <summary>
        /// GETs a Match object from Riot's API and then deserializes it into a MatchModel object.
        /// </summary>
        /// <param name="matchId">A long that references the particular match id.</param>
        /// <returns>Returns a Task for a MatchModel object.</returns>
        public async Task <MatchModel> GetMatchModelAsync(long matchId)
        {
            var uri = GetUriFromMatchId(matchId);

            var json = await _httpClient.GetStringAsync(uri).ConfigureAwait(false);

            var contract = JsonConvert.DeserializeObject <MatchDto>(json);

            return(contract.ToMatchModel());

            Uri GetUriFromMatchId(long matchId)
            {
                // If API Path changes, modify string below.

                return(_uriFactory
                       .AddSegments($"/lol/match/v4/matches/{matchId}")
                       .Create());
            }
        }
        /// <summary>
        /// GETs a Summoner object from Riot's API and deserializes it into a SummonerModel object.
        /// </summary>
        /// <returns>Returns a SummonerModel object.</returns>
        public async Task <SummonerModel> GetSummonerModelAsync()
        {
            var uri = GetUriFromSummonerName();

            var json = await _httpClient.GetStringAsync(uri).ConfigureAwait(false);

            var contract = JsonConvert.DeserializeObject <SummonerDto>(json);

            return(contract.ToSummonerModel());

            #region Local Methods
            Uri GetUriFromSummonerName()
            {
                // If API Path changes, modify string below.

                return(_uriFactory
                       .AddSegments($"/lol/summoner/v4/summoners/by-name/{_name}")
                       .Create());
            }

            #endregion        }
        }