Exemple #1
0
        private async Task <LeageTeamsApiResponse> GetCompetition(string leagueCode)
        {
            var existingCompetition = dbContext.Competitions.FirstOrDefault(c => c.Code == leagueCode);

            if (existingCompetition != null)
            {
                throw new AlreadyImportedLeageException(leagueCode);
            }

            LeageTeamsApiResponse leageAndTeamsData = null;

            try{
                leageAndTeamsData = await apiClient.get <LeageTeamsApiResponse>(string.Format("{0}/competitions/{1}/teams", baseUrl, leagueCode));
            }
            catch (ApiErrorException ex) {
                throw new List <int> {
                          400, 404
                }
                      .Contains(ex.errorCode)?
                      new ItemNotFoundException(ex):
                      new Exception(ex.message);
            }
            catch (Exception)
            {
                throw;
            }

            return(leageAndTeamsData);
        }
Exemple #2
0
        private List <TeamDetailsApiResponse> getPlayers(LeageTeamsApiResponse leageAndTeamsData)
        {
            var playersRequests = leageAndTeamsData.teams
                                  .Select(async x => {
                try
                {
                    var data = await apiClient.get <TeamDetailsApiResponse>(string.Format("{0}/teams/{1}", baseUrl, x.id));
                    return(data);
                }
                catch (System.Exception ex)
                {
                    //It is because it is not possible to receive more than 10 success responses in 1 minute
                    return(null);
                }
            }).ToArray();

            Task.WaitAll(playersRequests);

            var playersData = playersRequests
                              .Select(x => x.Result)
                              .Where(x => x != null).ToList();

            return(playersData);
        }