public async Task <Team> GetTeamAsync(TeamKey key, CancellationToken ct) { //const string fixturesAndStandingTab = "33-200-tab-2"; const string playersTab = "33-200-tab-3"; // http://www.kzs.si/incl?id=967&team_id=195883&league_id=undefined&season_id=102583 string address = $"incl?id=967&team_id={key.TeamId}&league_id=undefined&season_id={key.SeasonId}"; var dom = await domRetriever.GetDomForAsync(address, ct, playersTab); var rootPage = dom.Cast <DomResultItem?>().SingleOrDefault(d => string.Equals(d.Value.Id, Root, StringComparison.Ordinal)); //var fixturesAndResultsPage = dom.Cast<DomResultItem?>().SingleOrDefault(d => string.Equals(d.Value.Id, fixturesAndStandingTab, StringComparison.Ordinal)); var playersPage = dom.Cast <DomResultItem?>().SingleOrDefault(d => string.Equals(d.Value.Id, playersTab, StringComparison.Ordinal)); if (!rootPage.HasValue) { throw new Exception("Couldn't get root tab"); } var teamTask = GetTeamDataAsync(rootPage.Value, ct); var lastResultsTask = GetLastTeamResultsAsync(rootPage.Value, ct); var fixturesTask = GetShortGameFixturesAsync(rootPage.Value, ct); var playersTask = GetPlayersAsync(playersPage.Value, ct); var team = await teamTask; try { var lastResults = await lastResultsTask; team = team.Clone(lastResults: lastResults); } catch (Exception ex) { logger.LogWarning(ex, "Failed retrieving lastResults"); throw new DomParsingException("Failed retrieving lastResults", ex); } try { var fixtures = await fixturesTask; team = team.Clone(fixtures: fixtures); } catch (Exception ex) { logger.LogWarning(ex, "Failed retrieving fixtures"); throw new DomParsingException("Failed retrieving fixtures", ex); } try { var players = await playersTask; team = team.Clone(players: players); } catch (Exception ex) { logger.LogWarning(ex, "Failed retrieving players"); throw new DomParsingException("Failed retrieving players", ex); } return(team); }
public override int GetHashCode() { return(TeamKey.GetHashCode()); }