SomniaGuestLog - Address search/query using Nominatim - Initial implementation

Initial implementation for address search/query using external APIs (OSM Nominatim) & Added required classes for supporting more APIs in the future.
This commit is contained in:
2026-08-07 22:08:25 +02:00
parent 2335c223ea
commit 3fe558c231
12 changed files with 322 additions and 5 deletions
@@ -0,0 +1,27 @@
using Microsoft.Extensions.Options;
using Somnia.GuestLog.Models.Configuration;
using Somnia.GuestLog.Utils.DI;
namespace Somnia.GuestLog.Services.AddressQuery;
public class ConfigFileAddressQueryFactory(
IServiceProvider serviceProvider,
IOptions<AddressQueryConfig> config
) : IAddressQueryFactory, IFactoryDI
{
public static void RegisterFactoryItems(IServiceCollection services)
{
services.AddKeyedTransient<IAddressQueryService, NominatimAddressQueryService>(AddressQueryConfig.AddressQueryProviderEnum.Nominatim);
}
public IAddressQueryService GetService()
{
if (config.Value.EnableAddressQuery == false)
{
throw new InvalidOperationException("AddressQuery is disabled. Enable and configure it first!");
}
return serviceProvider.GetKeyedService<IAddressQueryService>(config.Value.Provider)
?? throw new InvalidOperationException($"AddressQueryService not found for provider: '{config.Value.Provider}'");
}
}