Ejemplo n.º 1
0
        public async Task <string> GetRaceHtml(EDRAEventInfo eventInfo, CancellationToken token)
        {
            var client = _httpClientFactory.CreateClient("EDRAClient");

            using var result = await client.GetAsync(eventInfo.FullUri, token);

            result.EnsureSuccessStatusCode();

            return(await result.Content.ReadAsStringAsync());
        }
Ejemplo n.º 2
0
        public async Task <ImmutableArray <EDRADragParser.ParseResult> > GetRaceData(EDRAEventInfo eventInfo, CancellationToken token)
        {
            var html = await GetRaceHtml(eventInfo, token);

            var doc = new HtmlDocument();

            doc.LoadHtml(html);

            var table  = doc.DocumentNode.Descendants("table").SingleOrDefault();
            var rows   = table?.Descendants("tr").Skip(1).ToArray() ?? Array.Empty <HtmlNode>();
            var parser = new EDRADragParser();

            if (!rows.Any())
            {
                return(ImmutableArray <EDRADragParser.ParseResult> .Empty);
            }

            return(rows
                   .Select(x => string.Join("|", x.Descendants("td").Select(y => y.InnerText)))
                   .Select(x => parser.Parse(x, eventInfo.Id))
                   .ToImmutableArray());
        }