📄
MatDenDagen/SmsSenderServiceExtensions.cs
using System; using System.ComponentModel.DataAnnotations; using HuaweiWifiSms.Grpc; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; namespace MatDenDagen; public static class SmsSenderServiceExtensions { public static IServiceCollection AddSmsSenderClient(this IServiceCollection services) { services.AddOptions<SmsSenderOptions>().BindConfiguration("SmsSender").ValidateOnStart(); services.AddTransient<IValidateOptions<SmsSenderOptions>, SmsSenderOptionsValidator>(); services .AddGrpcClient<SmsSender.SmsSenderClient>() .ConfigureHttpClient( (sp, client) => client.BaseAddress = sp.GetRequiredService<IOptions<SmsSenderOptions>>().Value.BaseAddress ); return services; } } public sealed class SmsSenderOptions { [Required] public required Uri BaseAddress { get; init; } } [OptionsValidator] public sealed partial class SmsSenderOptionsValidator : IValidateOptions<SmsSenderOptions>;