forked from alexalok/appmetrica-postapi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathContainerExtensions.cs
28 lines (22 loc) · 1.07 KB
/
ContainerExtensions.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
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace AppMetrica.PostAPI;
public static class ContainerExtensions
{
public static IServiceCollection AddAppMetricaUploader(this IServiceCollection services, IConfigurationSection? configurationSection = null, Action<AppMetricaOptions>? configureOptions = null)
{
var optionsBuilder = services.AddOptions<AppMetricaOptions>();
if (configurationSection != null)
optionsBuilder.Bind(configurationSection);
if (configureOptions != null)
optionsBuilder.Configure(configureOptions);
optionsBuilder
.Validate(opt => opt.ApplicationId != default, $"{nameof(AppMetricaOptions.ApplicationId)} must be set.")
.Validate(opt => opt.PostApiKey != default, $"{nameof(AppMetricaOptions.PostApiKey)} must be set.");
services.AddHttpClient<IAppMetricaUploader, AppMetricaUploader>(httpClient =>
{
httpClient.BaseAddress = AppMetricaOptions.BaseUrl;
});
return services;
}
}