Merge pull request #9350 from abpframework/extract-RemoteServiceConfigurationProvider

Extracted RemoteServiceConfigurationProvider.
pull/9406/head
Halil İbrahim Kalkan 4 years ago committed by GitHub
commit 7f955b521b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -19,9 +19,7 @@ namespace Volo.Abp.AspNetCore.Components.Server.Extensibility
{
public IHttpClientFactory HttpClientFactory { get; }
public IRemoteServiceHttpClientAuthenticator HttpClientAuthenticator { get; }
public AbpRemoteServiceOptions RemoteServiceOptions { get; }
public IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; }
public ICurrentTenant CurrentTenant { get; }
public IHttpContextAccessor HttpContextAccessor { get; }
public NavigationManager NavigationManager { get; }
@ -29,16 +27,16 @@ namespace Volo.Abp.AspNetCore.Components.Server.Extensibility
public BlazorServerLookupApiRequestService(IHttpClientFactory httpClientFactory,
IRemoteServiceHttpClientAuthenticator httpClientAuthenticator,
ICurrentTenant currentTenant,
IOptions<AbpRemoteServiceOptions> remoteServiceOptions,
IHttpContextAccessor httpContextAccessor,
NavigationManager navigationManager)
NavigationManager navigationManager,
IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider)
{
HttpClientFactory = httpClientFactory;
HttpClientAuthenticator = httpClientAuthenticator;
RemoteServiceOptions = remoteServiceOptions.Value;
CurrentTenant = currentTenant;
HttpContextAccessor = httpContextAccessor;
NavigationManager = navigationManager;
RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider;
}
public async Task<string> SendAsync(string url)
@ -53,7 +51,7 @@ namespace Volo.Abp.AspNetCore.Components.Server.Extensibility
try
{
//Blazor tiered -- mode
var remoteServiceConfig = RemoteServiceOptions.RemoteServices.GetConfigurationOrDefault("Default");
var remoteServiceConfig = RemoteServiceConfigurationProvider.GetConfigurationOrDefault("Default");
baseUrl = remoteServiceConfig.BaseUrl;
client.BaseAddress = new Uri(baseUrl);
AddHeaders(requestMessage);

@ -17,20 +17,18 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.Extensibility
{
public IHttpClientFactory HttpClientFactory { get; }
public IRemoteServiceHttpClientAuthenticator HttpClientAuthenticator { get; }
public AbpRemoteServiceOptions RemoteServiceOptions { get; }
public IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; }
public ICurrentTenant CurrentTenant { get; }
public WebAssemblyLookupApiRequestService(IHttpClientFactory httpClientFactory,
IRemoteServiceHttpClientAuthenticator httpClientAuthenticator,
ICurrentTenant currentTenant,
IOptions<AbpRemoteServiceOptions> remoteServiceOptions)
IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider)
{
HttpClientFactory = httpClientFactory;
HttpClientAuthenticator = httpClientAuthenticator;
RemoteServiceOptions = remoteServiceOptions.Value;
CurrentTenant = currentTenant;
RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider;
}
public async Task<string> SendAsync(string url)
@ -42,7 +40,7 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.Extensibility
var uri = new Uri(url, UriKind.RelativeOrAbsolute);
if (!uri.IsAbsoluteUri)
{
var remoteServiceConfig = RemoteServiceOptions.RemoteServices.GetConfigurationOrDefault("Default");
var remoteServiceConfig = RemoteServiceConfigurationProvider.GetConfigurationOrDefault("Default");
client.BaseAddress = new Uri(remoteServiceConfig.BaseUrl);
await HttpClientAuthenticator.Authenticate(new RemoteServiceHttpClientAuthenticateContext(client, requestMessage, new RemoteServiceConfiguration(remoteServiceConfig.BaseUrl), string.Empty));
}

@ -9,17 +9,17 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly
[Dependency(ReplaceServices = true)]
public class WebAssemblyServerUrlProvider : IServerUrlProvider, ITransientDependency
{
public AbpRemoteServiceOptions Options { get; }
protected IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; }
public WebAssemblyServerUrlProvider(
IOptions<AbpRemoteServiceOptions> options)
IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider)
{
Options = options.Value;
RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider;
}
public string GetBaseUrl(string remoteServiceName = null)
{
return Options.RemoteServices.GetConfigurationOrDefault(
return RemoteServiceConfigurationProvider.GetConfigurationOrDefault(
remoteServiceName ?? RemoteServiceConfigurationDictionary.DefaultName
).BaseUrl.EnsureEndsWith('/');
}

@ -34,7 +34,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying
protected AbpCorrelationIdOptions AbpCorrelationIdOptions { get; }
protected IDynamicProxyHttpClientFactory HttpClientFactory { get; }
protected IApiDescriptionFinder ApiDescriptionFinder { get; }
protected AbpRemoteServiceOptions AbpRemoteServiceOptions { get; }
protected IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; }
protected AbpHttpClientOptions ClientOptions { get; }
protected IJsonSerializer JsonSerializer { get; }
protected IRemoteServiceHttpClientAuthenticator ClientAuthenticator { get; }
@ -51,25 +51,25 @@ namespace Volo.Abp.Http.Client.DynamicProxying
public DynamicHttpProxyInterceptor(
IDynamicProxyHttpClientFactory httpClientFactory,
IOptions<AbpHttpClientOptions> clientOptions,
IOptionsSnapshot<AbpRemoteServiceOptions> remoteServiceOptions,
IApiDescriptionFinder apiDescriptionFinder,
IJsonSerializer jsonSerializer,
IRemoteServiceHttpClientAuthenticator clientAuthenticator,
ICancellationTokenProvider cancellationTokenProvider,
ICorrelationIdProvider correlationIdProvider,
IOptions<AbpCorrelationIdOptions> correlationIdOptions,
ICurrentTenant currentTenant)
ICurrentTenant currentTenant,
IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider)
{
CancellationTokenProvider = cancellationTokenProvider;
CorrelationIdProvider = correlationIdProvider;
CurrentTenant = currentTenant;
RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider;
AbpCorrelationIdOptions = correlationIdOptions.Value;
HttpClientFactory = httpClientFactory;
ApiDescriptionFinder = apiDescriptionFinder;
JsonSerializer = jsonSerializer;
ClientAuthenticator = clientAuthenticator;
ClientOptions = clientOptions.Value;
AbpRemoteServiceOptions = remoteServiceOptions.Value;
Logger = NullLogger<DynamicHttpProxyInterceptor<TService>>.Instance;
}
@ -135,7 +135,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying
private async Task<HttpContent> MakeRequestAsync(IAbpMethodInvocation invocation)
{
var clientConfig = ClientOptions.HttpClientProxies.GetOrDefault(typeof(TService)) ?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}.");
var remoteServiceConfig = AbpRemoteServiceOptions.RemoteServices.GetConfigurationOrDefault(clientConfig.RemoteServiceName);
var remoteServiceConfig = RemoteServiceConfigurationProvider.GetConfigurationOrDefault(clientConfig.RemoteServiceName);
var client = HttpClientFactory.Create(clientConfig.RemoteServiceName);
@ -263,8 +263,8 @@ namespace Volo.Abp.Http.Client.DynamicProxying
var clientConfig = ClientOptions.HttpClientProxies.GetOrDefault(typeof(TService))
?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}.");
return AbpRemoteServiceOptions.RemoteServices.GetOrDefault(clientConfig.RemoteServiceName)?.Version
?? AbpRemoteServiceOptions.RemoteServices.Default?.Version;
return RemoteServiceConfigurationProvider
.GetConfigurationOrDefaultOrNull(clientConfig.RemoteServiceName)?.Version;
}
private async Task ThrowExceptionForResponseAsync(HttpResponseMessage response)

@ -0,0 +1,13 @@
using JetBrains.Annotations;
namespace Volo.Abp.Http.Client
{
public interface IRemoteServiceConfigurationProvider
{
[NotNull]
RemoteServiceConfiguration GetConfigurationOrDefault(string name);
[CanBeNull]
RemoteServiceConfiguration GetConfigurationOrDefaultOrNull(string name);
}
}

@ -1,4 +1,5 @@
using System.Collections.Generic;
using JetBrains.Annotations;
namespace Volo.Abp.Http.Client
{
@ -12,11 +13,19 @@ namespace Volo.Abp.Http.Client
set => this[DefaultName] = value;
}
[NotNull]
public RemoteServiceConfiguration GetConfigurationOrDefault(string name)
{
return this.GetOrDefault(name)
?? Default
?? throw new AbpException($"Remote service '{name}' was not found and there is no default configuration.");
}
[CanBeNull]
public RemoteServiceConfiguration GetConfigurationOrDefaultOrNull(string name)
{
return this.GetOrDefault(name)
?? Default;
}
}
}

@ -0,0 +1,25 @@
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Http.Client
{
public class RemoteServiceConfigurationProvider : IRemoteServiceConfigurationProvider, IScopedDependency
{
protected AbpRemoteServiceOptions Options { get; }
public RemoteServiceConfigurationProvider(IOptionsSnapshot<AbpRemoteServiceOptions> options)
{
Options = options.Value;
}
public virtual RemoteServiceConfiguration GetConfigurationOrDefault(string name)
{
return Options.RemoteServices.GetConfigurationOrDefault(name);
}
public virtual RemoteServiceConfiguration GetConfigurationOrDefaultOrNull(string name)
{
return Options.RemoteServices.GetConfigurationOrDefaultOrNull(name);
}
}
}
Loading…
Cancel
Save