Made IRemoteServiceConfigurationProvider async.

pull/9406/head
Halil İbrahim Kalkan 4 years ago
parent c5f825c193
commit 16253a69be

@ -51,7 +51,7 @@ namespace Volo.Abp.AspNetCore.Components.Server.Extensibility
try try
{ {
//Blazor tiered -- mode //Blazor tiered -- mode
var remoteServiceConfig = RemoteServiceConfigurationProvider.GetConfigurationOrDefault("Default"); var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync("Default");
baseUrl = remoteServiceConfig.BaseUrl; baseUrl = remoteServiceConfig.BaseUrl;
client.BaseAddress = new Uri(baseUrl); client.BaseAddress = new Uri(baseUrl);
AddHeaders(requestMessage); AddHeaders(requestMessage);

@ -1,12 +1,13 @@
using Volo.Abp.DependencyInjection; using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Components.Web namespace Volo.Abp.AspNetCore.Components.Web
{ {
public class DefaultServerUrlProvider : IServerUrlProvider, ISingletonDependency public class DefaultServerUrlProvider : IServerUrlProvider, ISingletonDependency
{ {
public string GetBaseUrl(string remoteServiceName = null) public Task<string> GetBaseUrlAsync(string remoteServiceName = null)
{ {
return "/"; return Task.FromResult("/");
} }
} }
} }

@ -1,7 +1,9 @@
namespace Volo.Abp.AspNetCore.Components.Web using System.Threading.Tasks;
namespace Volo.Abp.AspNetCore.Components.Web
{ {
public interface IServerUrlProvider public interface IServerUrlProvider
{ {
string GetBaseUrl(string remoteServiceName = null); Task<string> GetBaseUrlAsync(string remoteServiceName = null);
} }
} }

@ -40,7 +40,7 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.Extensibility
var uri = new Uri(url, UriKind.RelativeOrAbsolute); var uri = new Uri(url, UriKind.RelativeOrAbsolute);
if (!uri.IsAbsoluteUri) if (!uri.IsAbsoluteUri)
{ {
var remoteServiceConfig = RemoteServiceConfigurationProvider.GetConfigurationOrDefault("Default"); var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync("Default");
client.BaseAddress = new Uri(remoteServiceConfig.BaseUrl); client.BaseAddress = new Uri(remoteServiceConfig.BaseUrl);
await HttpClientAuthenticator.Authenticate(new RemoteServiceHttpClientAuthenticateContext(client, requestMessage, new RemoteServiceConfiguration(remoteServiceConfig.BaseUrl), string.Empty)); await HttpClientAuthenticator.Authenticate(new RemoteServiceHttpClientAuthenticateContext(client, requestMessage, new RemoteServiceConfiguration(remoteServiceConfig.BaseUrl), string.Empty));
} }

@ -1,5 +1,5 @@
using System; using System;
using Microsoft.Extensions.Options; using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Components.Web; using Volo.Abp.AspNetCore.Components.Web;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client; using Volo.Abp.Http.Client;
@ -17,11 +17,13 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly
RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider; RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider;
} }
public string GetBaseUrl(string remoteServiceName = null) public async Task<string> GetBaseUrlAsync(string remoteServiceName = null)
{ {
return RemoteServiceConfigurationProvider.GetConfigurationOrDefault( var remoteServiceConfiguration = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync(
remoteServiceName ?? RemoteServiceConfigurationDictionary.DefaultName remoteServiceName ?? RemoteServiceConfigurationDictionary.DefaultName
).BaseUrl.EnsureEndsWith('/'); );
return remoteServiceConfiguration.BaseUrl.EnsureEndsWith('/');
} }
} }
} }

@ -135,7 +135,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying
private async Task<HttpContent> MakeRequestAsync(IAbpMethodInvocation invocation) 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 clientConfig = ClientOptions.HttpClientProxies.GetOrDefault(typeof(TService)) ?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}.");
var remoteServiceConfig = RemoteServiceConfigurationProvider.GetConfigurationOrDefault(clientConfig.RemoteServiceName); var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync(clientConfig.RemoteServiceName);
var client = HttpClientFactory.Create(clientConfig.RemoteServiceName); var client = HttpClientFactory.Create(clientConfig.RemoteServiceName);
@ -146,7 +146,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying
invocation.Method invocation.Method
); );
var apiVersion = GetApiVersionInfo(action); var apiVersion = await GetApiVersionInfoAsync(action);
var url = remoteServiceConfig.BaseUrl.EnsureEndsWith('/') + UrlBuilder.GenerateUrlWithParameters(action, invocation.ArgumentsDictionary, apiVersion); var url = remoteServiceConfig.BaseUrl.EnsureEndsWith('/') + UrlBuilder.GenerateUrlWithParameters(action, invocation.ArgumentsDictionary, apiVersion);
var requestMessage = new HttpRequestMessage(action.GetHttpMethod(), url) var requestMessage = new HttpRequestMessage(action.GetHttpMethod(), url)
@ -182,9 +182,9 @@ namespace Volo.Abp.Http.Client.DynamicProxying
return response.Content; return response.Content;
} }
private ApiVersionInfo GetApiVersionInfo(ActionApiDescriptionModel action) private async Task<ApiVersionInfo> GetApiVersionInfoAsync(ActionApiDescriptionModel action)
{ {
var apiVersion = FindBestApiVersion(action); var apiVersion = await FindBestApiVersionAsync(action);
//TODO: Make names configurable? //TODO: Make names configurable?
var versionParam = action.Parameters.FirstOrDefault(p => p.Name == "apiVersion" && p.BindingSourceId == ParameterBindingSources.Path) ?? var versionParam = action.Parameters.FirstOrDefault(p => p.Name == "apiVersion" && p.BindingSourceId == ParameterBindingSources.Path) ??
@ -193,9 +193,9 @@ namespace Volo.Abp.Http.Client.DynamicProxying
return new ApiVersionInfo(versionParam?.BindingSourceId, apiVersion); return new ApiVersionInfo(versionParam?.BindingSourceId, apiVersion);
} }
private string FindBestApiVersion(ActionApiDescriptionModel action) private async Task<string> FindBestApiVersionAsync(ActionApiDescriptionModel action)
{ {
var configuredVersion = GetConfiguredApiVersion(); var configuredVersion = await GetConfiguredApiVersionAsync();
if (action.SupportedVersions.IsNullOrEmpty()) if (action.SupportedVersions.IsNullOrEmpty())
{ {
@ -258,13 +258,13 @@ namespace Volo.Abp.Http.Client.DynamicProxying
requestMessage.Headers.Add("X-Requested-With", "XMLHttpRequest"); requestMessage.Headers.Add("X-Requested-With", "XMLHttpRequest");
} }
private string GetConfiguredApiVersion() private async Task<string> GetConfiguredApiVersionAsync()
{ {
var clientConfig = ClientOptions.HttpClientProxies.GetOrDefault(typeof(TService)) var clientConfig = ClientOptions.HttpClientProxies.GetOrDefault(typeof(TService))
?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}."); ?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}.");
return RemoteServiceConfigurationProvider return (await RemoteServiceConfigurationProvider
.GetConfigurationOrDefaultOrNull(clientConfig.RemoteServiceName)?.Version; .GetConfigurationOrDefaultOrNullAsync(clientConfig.RemoteServiceName))?.Version;
} }
private async Task ThrowExceptionForResponseAsync(HttpResponseMessage response) private async Task ThrowExceptionForResponseAsync(HttpResponseMessage response)

@ -1,13 +1,14 @@
using JetBrains.Annotations; using System.Threading.Tasks;
using JetBrains.Annotations;
namespace Volo.Abp.Http.Client namespace Volo.Abp.Http.Client
{ {
public interface IRemoteServiceConfigurationProvider public interface IRemoteServiceConfigurationProvider
{ {
[NotNull] [ItemNotNull]
RemoteServiceConfiguration GetConfigurationOrDefault(string name); Task<RemoteServiceConfiguration> GetConfigurationOrDefaultAsync(string name);
[CanBeNull] [ItemCanBeNull]
RemoteServiceConfiguration GetConfigurationOrDefaultOrNull(string name); Task<RemoteServiceConfiguration> GetConfigurationOrDefaultOrNullAsync(string name);
} }
} }

@ -1,4 +1,5 @@
using Microsoft.Extensions.Options; using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Http.Client namespace Volo.Abp.Http.Client
@ -11,15 +12,15 @@ namespace Volo.Abp.Http.Client
{ {
Options = options.Value; Options = options.Value;
} }
public virtual RemoteServiceConfiguration GetConfigurationOrDefault(string name) public Task<RemoteServiceConfiguration> GetConfigurationOrDefaultAsync(string name)
{ {
return Options.RemoteServices.GetConfigurationOrDefault(name); return Task.FromResult(Options.RemoteServices.GetConfigurationOrDefault(name));
} }
public virtual RemoteServiceConfiguration GetConfigurationOrDefaultOrNull(string name) public Task<RemoteServiceConfiguration> GetConfigurationOrDefaultOrNullAsync(string name)
{ {
return Options.RemoteServices.GetConfigurationOrDefaultOrNull(name); return Task.FromResult(Options.RemoteServices.GetConfigurationOrDefaultOrNull(name));
} }
} }
} }

@ -64,7 +64,10 @@ namespace Volo.Abp.Http.ProxyScripting
using (var scope = _serviceProvider.CreateScope()) using (var scope = _serviceProvider.CreateScope())
{ {
return scope.ServiceProvider.GetRequiredService(generatorType).As<IProxyScriptGenerator>().CreateScript(apiModel); return scope.ServiceProvider
.GetRequiredService(generatorType)
.As<IProxyScriptGenerator>()
.CreateScript(apiModel);
} }
} }

Loading…
Cancel
Save