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
{
//Blazor tiered -- mode
var remoteServiceConfig = RemoteServiceConfigurationProvider.GetConfigurationOrDefault("Default");
var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync("Default");
baseUrl = remoteServiceConfig.BaseUrl;
client.BaseAddress = new Uri(baseUrl);
AddHeaders(requestMessage);

@ -1,12 +1,13 @@
using Volo.Abp.DependencyInjection;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Components.Web
{
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
{
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);
if (!uri.IsAbsoluteUri)
{
var remoteServiceConfig = RemoteServiceConfigurationProvider.GetConfigurationOrDefault("Default");
var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync("Default");
client.BaseAddress = new Uri(remoteServiceConfig.BaseUrl);
await HttpClientAuthenticator.Authenticate(new RemoteServiceHttpClientAuthenticateContext(client, requestMessage, new RemoteServiceConfiguration(remoteServiceConfig.BaseUrl), string.Empty));
}

@ -1,5 +1,5 @@
using System;
using Microsoft.Extensions.Options;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Components.Web;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
@ -17,11 +17,13 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly
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
).BaseUrl.EnsureEndsWith('/');
);
return remoteServiceConfiguration.BaseUrl.EnsureEndsWith('/');
}
}
}

@ -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 = RemoteServiceConfigurationProvider.GetConfigurationOrDefault(clientConfig.RemoteServiceName);
var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync(clientConfig.RemoteServiceName);
var client = HttpClientFactory.Create(clientConfig.RemoteServiceName);
@ -146,7 +146,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying
invocation.Method
);
var apiVersion = GetApiVersionInfo(action);
var apiVersion = await GetApiVersionInfoAsync(action);
var url = remoteServiceConfig.BaseUrl.EnsureEndsWith('/') + UrlBuilder.GenerateUrlWithParameters(action, invocation.ArgumentsDictionary, apiVersion);
var requestMessage = new HttpRequestMessage(action.GetHttpMethod(), url)
@ -182,9 +182,9 @@ namespace Volo.Abp.Http.Client.DynamicProxying
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?
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);
}
private string FindBestApiVersion(ActionApiDescriptionModel action)
private async Task<string> FindBestApiVersionAsync(ActionApiDescriptionModel action)
{
var configuredVersion = GetConfiguredApiVersion();
var configuredVersion = await GetConfiguredApiVersionAsync();
if (action.SupportedVersions.IsNullOrEmpty())
{
@ -258,13 +258,13 @@ namespace Volo.Abp.Http.Client.DynamicProxying
requestMessage.Headers.Add("X-Requested-With", "XMLHttpRequest");
}
private string GetConfiguredApiVersion()
private async Task<string> GetConfiguredApiVersionAsync()
{
var clientConfig = ClientOptions.HttpClientProxies.GetOrDefault(typeof(TService))
?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}.");
return RemoteServiceConfigurationProvider
.GetConfigurationOrDefaultOrNull(clientConfig.RemoteServiceName)?.Version;
return (await RemoteServiceConfigurationProvider
.GetConfigurationOrDefaultOrNullAsync(clientConfig.RemoteServiceName))?.Version;
}
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
{
public interface IRemoteServiceConfigurationProvider
{
[NotNull]
RemoteServiceConfiguration GetConfigurationOrDefault(string name);
[ItemNotNull]
Task<RemoteServiceConfiguration> GetConfigurationOrDefaultAsync(string name);
[CanBeNull]
RemoteServiceConfiguration GetConfigurationOrDefaultOrNull(string name);
[ItemCanBeNull]
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;
namespace Volo.Abp.Http.Client
@ -11,15 +12,15 @@ namespace Volo.Abp.Http.Client
{
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())
{
return scope.ServiceProvider.GetRequiredService(generatorType).As<IProxyScriptGenerator>().CreateScript(apiModel);
return scope.ServiceProvider
.GetRequiredService(generatorType)
.As<IProxyScriptGenerator>()
.CreateScript(apiModel);
}
}

Loading…
Cancel
Save