From 4c62dba7fd149eb812e857a763efdd2ce525dd8d Mon Sep 17 00:00:00 2001 From: Moley-Bot Date: Mon, 12 Jan 2026 10:28:36 +0000 Subject: [PATCH 1/6] Add collector for WakefieldCouncil Closes #86 Generated with Codex CLI by Moley-Bot --- .../Collectors/Councils/WakefieldCouncil.cs | 246 ++++++++++++++++++ .../Councils/WakefieldCouncilTests.cs | 36 +++ 2 files changed, 282 insertions(+) create mode 100644 BinDays.Api.Collectors/Collectors/Councils/WakefieldCouncil.cs create mode 100644 BinDays.Api.IntegrationTests/Collectors/Councils/WakefieldCouncilTests.cs diff --git a/BinDays.Api.Collectors/Collectors/Councils/WakefieldCouncil.cs b/BinDays.Api.Collectors/Collectors/Councils/WakefieldCouncil.cs new file mode 100644 index 00000000..db0284b6 --- /dev/null +++ b/BinDays.Api.Collectors/Collectors/Councils/WakefieldCouncil.cs @@ -0,0 +1,246 @@ +namespace BinDays.Api.Collectors.Collectors.Councils; + +using BinDays.Api.Collectors.Collectors.Vendors; +using BinDays.Api.Collectors.Models; +using BinDays.Api.Collectors.Utilities; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text.RegularExpressions; +using System.Web; + +/// +/// Collector implementation for Wakefield Council. +/// +internal sealed partial class WakefieldCouncil : GovUkCollectorBase, ICollector +{ + /// + public string Name => "Wakefield Council"; + + /// + public Uri WebsiteUrl => new("https://www.wakefield.gov.uk/"); + + /// + public override string GovUkId => "wakefield"; + + /// + /// The list of bin types for this collector. + /// + private readonly IReadOnlyCollection _binTypes = [ + new() + { + Name = "General Waste", + Colour = BinColour.Green, + Keys = [ "Household waste", "General waste", "Refuse" ], + }, + new() + { + Name = "Recycling", + Colour = BinColour.Brown, + Keys = [ "Mixed recycling", "Recycling" ], + }, + new() + { + Name = "Garden Waste", + Colour = BinColour.Brown, + Keys = [ "Garden waste" ], + }, + ]; + + /// + /// Regex for the addresses from the address picker links. + /// + [GeneratedRegex(@"]*?href=""(?[^""]*?where-i-live\?uprn=[^""]+)""[^>]*>(?