📄
MatDenDagen/SmsSenderServiceExtensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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 ) .AddStandardResilienceHandler(options => { var timeout = TimeSpan.FromSeconds(120); options.AttemptTimeout.Timeout = options.TotalRequestTimeout.Timeout = timeout; options.CircuitBreaker.SamplingDuration = timeout * 2; }); return services; } } public sealed class SmsSenderOptions { [Required] public required Uri BaseAddress { get; init; } } [OptionsValidator] public sealed partial class SmsSenderOptionsValidator : IValidateOptions<SmsSenderOptions>;