Add project files.
This commit is contained in:
@ -0,0 +1,19 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BinaryDad.Extensions" Version="21.4.20.3" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BinaryDad.AacpsBusAlert\BinaryDad.AacpsBusAlert.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
45
BinaryDad.AacpsBusAlert.Services/BusRouteService.cs
Normal file
45
BinaryDad.AacpsBusAlert.Services/BusRouteService.cs
Normal file
@ -0,0 +1,45 @@
|
||||
using BinaryDad.Extensions;
|
||||
using Newtonsoft.Json;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace BinaryDad.AacpsBusAlert.Services
|
||||
{
|
||||
public class BusRouteService
|
||||
{
|
||||
private readonly HttpClient httpClient;
|
||||
|
||||
public BusRouteService(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");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user