using Birdmap.API.Options; using Birdmap.API.Services.Mqtt; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System; namespace Birdmap.API.Extensions { public static class ServiceCollectionExtensions { public static IServiceCollection AddMqttClientServiceWithConfig(this IServiceCollection services, Action configureOptions) { services.AddSingleton(serviceProvider => { var optionBuilder = new AspCoreMqttClientOptions(serviceProvider); configureOptions(optionBuilder); return optionBuilder.Build(); }); services.AddSingleton(); services.AddSingleton(serviceProvider => { return serviceProvider.GetService(); }); services.AddSingleton(serviceProvider => { var mqttClientService = serviceProvider.GetService(); var mqttClientServiceProvider = new MqttClientServiceProvider(mqttClientService); return mqttClientServiceProvider; }); return services; } } }