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); }
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); }