From bccd1155906b0a0c34a711e3f27165516c9432fe Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 9 Aug 2022 18:04:45 +0800 Subject: [PATCH] Implement the Dapr http client --- .../Http/Client/Dapr/AbpDaprClientOptions.cs | 24 +++++++++++++++++++ .../Client/Dapr/AbpHttpClientDaprModule.cs | 20 +++++++++++++--- ...viceCollectionHttpClientProxyExtensions.cs | 2 +- 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpDaprClientOptions.cs diff --git a/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpDaprClientOptions.cs b/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpDaprClientOptions.cs new file mode 100644 index 0000000000..b2504acd9c --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpDaprClientOptions.cs @@ -0,0 +1,24 @@ +using Dapr.Client; +using Microsoft.Extensions.DependencyInjection; + +namespace Volo.Abp.Http.Client.Dapr; + +public class AbpDaprClientOptions +{ + public Action DaprHttpClientBuilderAction { get; set; } + + public AbpDaprClientOptions() + { + DaprHttpClientBuilderAction = DefaultDaprHttpClientBuilder; + } + + private void DefaultDaprHttpClientBuilder(string serviceName, IHttpClientBuilder clientBuilder, string daprEndpoint) + { + Check.NotNull(daprEndpoint, nameof(daprEndpoint)); + + clientBuilder.AddHttpMessageHandler(() => new InvocationHandler + { + DaprEndpoint = daprEndpoint + }); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpHttpClientDaprModule.cs b/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpHttpClientDaprModule.cs index 8d9a73290f..1b24510842 100644 --- a/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpHttpClientDaprModule.cs +++ b/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpHttpClientDaprModule.cs @@ -1,4 +1,5 @@ -using Volo.Abp.Dapr; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Dapr; using Volo.Abp.Modularity; namespace Volo.Abp.Http.Client.Dapr; @@ -6,7 +7,20 @@ namespace Volo.Abp.Http.Client.Dapr; [DependsOn( typeof(AbpHttpClientModule), typeof(AbpDaprModule) - )] +)] public class AbpHttpClientDaprModule : AbpModule -{ +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + var daprOptions = context.Services.ExecutePreConfiguredActions(); + var daprClientOptions = context.Services.ExecutePreConfiguredActions(); + + PreConfigure(options => + { + options.ProxyClientBuildActions.Add((_, clientBuilder) => + { + daprClientOptions.DaprHttpClientBuilderAction(_, clientBuilder, daprOptions.HttpEndpoint); + }); + }); + } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionHttpClientProxyExtensions.cs b/framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionHttpClientProxyExtensions.cs index 4ccac104cd..7bc239813d 100644 --- a/framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionHttpClientProxyExtensions.cs +++ b/framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionHttpClientProxyExtensions.cs @@ -212,7 +212,7 @@ public static class ServiceCollectionHttpClientProxyExtensions } /// - /// Checks wether the type is suitable to use with the proxying. + /// Checks whether the type is suitable to use with the proxying. /// Currently the type is checked statically against some fixed conditions. /// /// Type to check