SHA256
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:
@@ -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}'");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user