ui updates, use services

This commit is contained in:
2022-10-04 22:23:14 -04:00
parent d1da303805
commit 43aa0aaa6e
13 changed files with 139 additions and 34 deletions

View File

@ -0,0 +1,44 @@
using BinaryDad.Extensions;
using Newtonsoft.Json;
using System.Text.RegularExpressions;
namespace BinaryDad.AacpsBusAlert.Services
{
public class HtmlScrapeBusRouteService : IBusRouteService
{
private readonly HttpClient httpClient;
public HtmlScrapeBusRouteService(IHttpClientFactory httpClientFactory)
{
httpClient = httpClientFactory.CreateClient();
}
public async Task<ICollection<BusRoute>> GetBusRoutesAsync()
{
var url = "https://busstops.aacps.org/public/BusRouteIssues.aspx";
var content = await httpClient.GetStringAsync(url);
var dataArrayMatch = Regex.Match(content, "var dataArray \\= (.*)\\;");
if (dataArrayMatch.Success && dataArrayMatch.Groups.Count == 2)
{
var dataArray = dataArrayMatch.Groups[1].Value;
var parsedArray = JsonConvert.DeserializeObject<string[][]>(dataArray);
return parsedArray
.Select(r => new BusRoute
{
BusNumber = r[0].To<int>(),
SubBusNumber = r[1].To<int>(),
Schools = r[2],
Schedules = r[3],
Impact = r[4]
})
.ToList();
}
throw new ApplicationException("Unable to parse bus route page");
}
}
}

View File

@ -0,0 +1,7 @@
namespace BinaryDad.AacpsBusAlert.Services
{
public interface IBusRouteService
{
Task<ICollection<BusRoute>> GetBusRoutesAsync();
}
}