elsa-core/src/activities/Elsa.Activities.Dropbox/Extensions/ServiceCollectionExtensions.cs
Sviataslau Hankovich 6551b61ead
Simplify Options, get rid of OptionsBuilder (#431)
* Minor cleanup

* Fix namespaces

* Simplify options
2020-10-27 12:32:53 +01:00

48 lines
1.7 KiB
C#

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using Elsa.Activities.Dropbox.Activities;
using Elsa.Activities.Dropbox.Options;
using Elsa.Activities.Dropbox.Services;
using Microsoft.Extensions.Options;
// ReSharper disable once CheckNamespace
namespace Microsoft.Extensions.DependencyInjection
{
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddDropbox(this IServiceCollection services, Action<DropboxOptions>? configureOptions = null) =>
services
.AddDropboxServices(configureOptions)
.AddDropboxActivities();
public static IServiceCollection AddDropboxServices(this IServiceCollection services, Action<DropboxOptions>? configureOptions = null)
{
if (configureOptions != null)
{
services.Configure(configureOptions);
}
services
.AddHttpClient<IFilesApi, FilesApi>()
.ConfigureHttpClient(ConfigureHttpClient);
return services;
}
public static IServiceCollection AddDropboxActivities(this IServiceCollection services) => services.AddActivity<SaveToDropbox>();
private static void ConfigureHttpClient(IServiceProvider services, HttpClient httpClient)
{
var options = services.GetRequiredService<IOptions<DropboxOptions>>().Value;
httpClient.BaseAddress =
options.ContentServiceUrl ?? new Uri(
"https://content.dropboxapi.com",
UriKind.Absolute
);
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", options.AccessToken);
}
}
}