/// <summary> /// Registers the IDocumentLibraryClient with the DI container. /// </summary> /// <param name="serviceCollection">The IServiceCollection.</param> /// <param name="options">Configuration options for this client.</param> /// <param name="factory">Factory used to construct instances of an IDocumentLibraryClient.</param> /// <returns>The updated IServiceCollection.</returns> public static IServiceCollection AddDocumentLibraryClient(this IServiceCollection serviceCollection, DocumentLibraryClientOptions options, Func <HttpClient, IServiceProvider, IDocumentLibraryClient> factory) { if (options is null) { throw new ArgumentNullException(nameof(options)); } if (options.TokenClientOptions is null) { throw new ArgumentOutOfRangeException(nameof(options)); } // Configure the HttpClient for use by the ITokenClient. serviceCollection.AddHttpClient(DocumentLibraryClientOptions.DocumentLibraryTokenClientBackChannelHttpClientName) .UseSslProtocols(SslProtocols.Tls12); // Configure the ITokenClient to use the previous HttpClient. serviceCollection .AddClientCredentialsTokenClient(DocumentLibraryClientOptions.DocumentLibraryTokenClientName, options.TokenClientOptions) .UseHttpClientForBackchannel(DocumentLibraryClientOptions.DocumentLibraryTokenClientBackChannelHttpClientName); // Configure the HttpClient with the ITokenClient for inserting tokens into the header. IHttpClientBuilder httpClientBuilder = serviceCollection .AddHttpClient(DocumentLibraryClientOptions.DocumentLibraryHttpClientName, c => c.BaseAddress = options.DocumentLibraryApiUri) .UseSslProtocols(SslProtocols.Tls12) .UseApiVersion(options.ApiVersion ?? "2019-09-01", null !) .UseTokenClient(DocumentLibraryClientOptions.DocumentLibraryTokenClientName) .AddTypedClient(factory); if (!string.IsNullOrWhiteSpace(options.ApiKey)) { httpClientBuilder.UseHeader(options.ApiKeyHeaderName ?? "Subscription-Key", options.ApiKey !); } return(serviceCollection); }
/// <summary> /// Registers the IDocumentLibraryClient with the DI container. /// </summary> /// <param name="serviceCollection">The IServiceCollection.</param> /// <param name="options">Configuration options for this client.</param> /// <returns>The updated IServiceCollection.</returns> public static IServiceCollection AddDocumentLibraryClient(this IServiceCollection serviceCollection, DocumentLibraryClientOptions options) { return(serviceCollection.AddDocumentLibraryClient <DocumentLibraryClient>(options)); }