mirror of
https://github.com/ckaczor/HomeMonitor.git
synced 2026-06-15 01:45:06 -04:00
Handle multiple countries for national days
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
using ChrisKaczor.HomeMonitor.Calendar.Service.Models;
|
||||
using DaysOfTheYear = ChrisKaczor.HomeMonitor.Calendar.Service.Models.DaysOfTheYear;
|
||||
using HolidayCalendar = ChrisKaczor.HomeMonitor.Calendar.Service.Models.HolidayCalendar;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using RestSharp;
|
||||
using DaysOfTheYear = ChrisKaczor.HomeMonitor.Calendar.Service.Models.DaysOfTheYear;
|
||||
using HolidayCalendar = ChrisKaczor.HomeMonitor.Calendar.Service.Models.HolidayCalendar;
|
||||
|
||||
namespace ChrisKaczor.HomeMonitor.Calendar.Service.Controllers;
|
||||
|
||||
@@ -51,17 +51,18 @@ public class NationalDaysController(IConfiguration configuration, RestClient res
|
||||
var now = DateTimeOffset.UtcNow.ToOffset(timeZoneOffset);
|
||||
var dateString = now.ToString("yyyy-MM-dd");
|
||||
|
||||
var countries = configuration.GetSection("Calendar:HolidayCalendar:CountryCodes").Get<List<string>>() ?? [];
|
||||
|
||||
var restRequest = new RestRequest(configuration["Calendar:HolidayCalendar:Url"]);
|
||||
restRequest.AddHeader("Authorization", $"Bearer {configuration["Calendar:HolidayCalendar:Key"] ?? string.Empty}");
|
||||
restRequest.AddQueryParameter("limit", 100);
|
||||
restRequest.AddQueryParameter("country", configuration["Calendar:HolidayCalendar:Country"]);
|
||||
restRequest.AddQueryParameter("type", "Day");
|
||||
restRequest.AddQueryParameter("startDate", dateString);
|
||||
restRequest.AddQueryParameter("endDate", dateString);
|
||||
|
||||
var response = await restClient.GetAsync<HolidayCalendar.Response>(restRequest);
|
||||
|
||||
var nationalDays = response?.Data.Items.Select(i => new NationalDay(i));
|
||||
var nationalDays = response?.Data.Items.Where(i => countries.Contains(i.Country.Code)).Select(i => new NationalDay(i));
|
||||
|
||||
return nationalDays;
|
||||
}
|
||||
|
||||
11
Calendar/Service/Models/HolidayCalendar/Country.cs
Normal file
11
Calendar/Service/Models/HolidayCalendar/Country.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using JetBrains.Annotations;
|
||||
|
||||
namespace ChrisKaczor.HomeMonitor.Calendar.Service.Models.HolidayCalendar;
|
||||
|
||||
[PublicAPI]
|
||||
public class Country
|
||||
{
|
||||
public required string Id { get; set; }
|
||||
public required string Name { get; set; }
|
||||
public required string Code { get; set; }
|
||||
}
|
||||
@@ -10,4 +10,5 @@ public class Item
|
||||
public required string Excerpt { get; set; }
|
||||
public required string Url { get; set; }
|
||||
public required string Type { get; set; }
|
||||
public required Country Country { get; set; }
|
||||
}
|
||||
@@ -19,7 +19,7 @@
|
||||
"HolidayCalendar": {
|
||||
"Url": "",
|
||||
"Key": "",
|
||||
"Country": "recYxvMVBeTBnsPrJ"
|
||||
"CountryCodes": [ "US", "INTL" ]
|
||||
},
|
||||
"NationalDays": {
|
||||
"Provider": "HolidayCalendar"
|
||||
|
||||
Reference in New Issue
Block a user