Skip to content

Commit 6253849

Browse files
authored
Merge pull request #9406 from abpframework/async-IRemoteServiceConfigurationProvider
Made IRemoteServiceConfigurationProvider async
2 parents c5f825c + 16253a6 commit 6253849

File tree

9 files changed

+43
-33
lines changed

9 files changed

+43
-33
lines changed

framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/Extensibility/BlazorServerLookupApiRequestService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public async Task<string> SendAsync(string url)
5151
try
5252
{
5353
//Blazor tiered -- mode
54-
var remoteServiceConfig = RemoteServiceConfigurationProvider.GetConfigurationOrDefault("Default");
54+
var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync("Default");
5555
baseUrl = remoteServiceConfig.BaseUrl;
5656
client.BaseAddress = new Uri(baseUrl);
5757
AddHeaders(requestMessage);
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
using Volo.Abp.DependencyInjection;
1+
using System.Threading.Tasks;
2+
using Volo.Abp.DependencyInjection;
23

34
namespace Volo.Abp.AspNetCore.Components.Web
45
{
56
public class DefaultServerUrlProvider : IServerUrlProvider, ISingletonDependency
67
{
7-
public string GetBaseUrl(string remoteServiceName = null)
8+
public Task<string> GetBaseUrlAsync(string remoteServiceName = null)
89
{
9-
return "/";
10+
return Task.FromResult("/");
1011
}
1112
}
1213
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
namespace Volo.Abp.AspNetCore.Components.Web
1+
using System.Threading.Tasks;
2+
3+
namespace Volo.Abp.AspNetCore.Components.Web
24
{
35
public interface IServerUrlProvider
46
{
5-
string GetBaseUrl(string remoteServiceName = null);
7+
Task<string> GetBaseUrlAsync(string remoteServiceName = null);
68
}
79
}

framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public async Task<string> SendAsync(string url)
4040
var uri = new Uri(url, UriKind.RelativeOrAbsolute);
4141
if (!uri.IsAbsoluteUri)
4242
{
43-
var remoteServiceConfig = RemoteServiceConfigurationProvider.GetConfigurationOrDefault("Default");
43+
var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync("Default");
4444
client.BaseAddress = new Uri(remoteServiceConfig.BaseUrl);
4545
await HttpClientAuthenticator.Authenticate(new RemoteServiceHttpClientAuthenticateContext(client, requestMessage, new RemoteServiceConfiguration(remoteServiceConfig.BaseUrl), string.Empty));
4646
}

framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyServerUrlProvider.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using System;
2-
using Microsoft.Extensions.Options;
2+
using System.Threading.Tasks;
33
using Volo.Abp.AspNetCore.Components.Web;
44
using Volo.Abp.DependencyInjection;
55
using Volo.Abp.Http.Client;
@@ -17,11 +17,13 @@ public WebAssemblyServerUrlProvider(
1717
RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider;
1818
}
1919

20-
public string GetBaseUrl(string remoteServiceName = null)
20+
public async Task<string> GetBaseUrlAsync(string remoteServiceName = null)
2121
{
22-
return RemoteServiceConfigurationProvider.GetConfigurationOrDefault(
22+
var remoteServiceConfiguration = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync(
2323
remoteServiceName ?? RemoteServiceConfigurationDictionary.DefaultName
24-
).BaseUrl.EnsureEndsWith('/');
24+
);
25+
26+
return remoteServiceConfiguration.BaseUrl.EnsureEndsWith('/');
2527
}
2628
}
2729
}

framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ private async Task<T> MakeRequestAndGetResultAsync<T>(IAbpMethodInvocation invoc
135135
private async Task<HttpContent> MakeRequestAsync(IAbpMethodInvocation invocation)
136136
{
137137
var clientConfig = ClientOptions.HttpClientProxies.GetOrDefault(typeof(TService)) ?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}.");
138-
var remoteServiceConfig = RemoteServiceConfigurationProvider.GetConfigurationOrDefault(clientConfig.RemoteServiceName);
138+
var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync(clientConfig.RemoteServiceName);
139139

140140
var client = HttpClientFactory.Create(clientConfig.RemoteServiceName);
141141

@@ -146,7 +146,7 @@ private async Task<HttpContent> MakeRequestAsync(IAbpMethodInvocation invocation
146146
invocation.Method
147147
);
148148

149-
var apiVersion = GetApiVersionInfo(action);
149+
var apiVersion = await GetApiVersionInfoAsync(action);
150150
var url = remoteServiceConfig.BaseUrl.EnsureEndsWith('/') + UrlBuilder.GenerateUrlWithParameters(action, invocation.ArgumentsDictionary, apiVersion);
151151

152152
var requestMessage = new HttpRequestMessage(action.GetHttpMethod(), url)
@@ -182,9 +182,9 @@ await ClientAuthenticator.Authenticate(
182182
return response.Content;
183183
}
184184

185-
private ApiVersionInfo GetApiVersionInfo(ActionApiDescriptionModel action)
185+
private async Task<ApiVersionInfo> GetApiVersionInfoAsync(ActionApiDescriptionModel action)
186186
{
187-
var apiVersion = FindBestApiVersion(action);
187+
var apiVersion = await FindBestApiVersionAsync(action);
188188

189189
//TODO: Make names configurable?
190190
var versionParam = action.Parameters.FirstOrDefault(p => p.Name == "apiVersion" && p.BindingSourceId == ParameterBindingSources.Path) ??
@@ -193,9 +193,9 @@ private ApiVersionInfo GetApiVersionInfo(ActionApiDescriptionModel action)
193193
return new ApiVersionInfo(versionParam?.BindingSourceId, apiVersion);
194194
}
195195

196-
private string FindBestApiVersion(ActionApiDescriptionModel action)
196+
private async Task<string> FindBestApiVersionAsync(ActionApiDescriptionModel action)
197197
{
198-
var configuredVersion = GetConfiguredApiVersion();
198+
var configuredVersion = await GetConfiguredApiVersionAsync();
199199

200200
if (action.SupportedVersions.IsNullOrEmpty())
201201
{
@@ -258,13 +258,13 @@ protected virtual void AddHeaders(
258258
requestMessage.Headers.Add("X-Requested-With", "XMLHttpRequest");
259259
}
260260

261-
private string GetConfiguredApiVersion()
261+
private async Task<string> GetConfiguredApiVersionAsync()
262262
{
263263
var clientConfig = ClientOptions.HttpClientProxies.GetOrDefault(typeof(TService))
264264
?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}.");
265265

266-
return RemoteServiceConfigurationProvider
267-
.GetConfigurationOrDefaultOrNull(clientConfig.RemoteServiceName)?.Version;
266+
return (await RemoteServiceConfigurationProvider
267+
.GetConfigurationOrDefaultOrNullAsync(clientConfig.RemoteServiceName))?.Version;
268268
}
269269

270270
private async Task ThrowExceptionForResponseAsync(HttpResponseMessage response)
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
using JetBrains.Annotations;
1+
using System.Threading.Tasks;
2+
using JetBrains.Annotations;
23

34
namespace Volo.Abp.Http.Client
45
{
56
public interface IRemoteServiceConfigurationProvider
67
{
7-
[NotNull]
8-
RemoteServiceConfiguration GetConfigurationOrDefault(string name);
8+
[ItemNotNull]
9+
Task<RemoteServiceConfiguration> GetConfigurationOrDefaultAsync(string name);
910

10-
[CanBeNull]
11-
RemoteServiceConfiguration GetConfigurationOrDefaultOrNull(string name);
11+
[ItemCanBeNull]
12+
Task<RemoteServiceConfiguration> GetConfigurationOrDefaultOrNullAsync(string name);
1213
}
1314
}
Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Microsoft.Extensions.Options;
1+
using System.Threading.Tasks;
2+
using Microsoft.Extensions.Options;
23
using Volo.Abp.DependencyInjection;
34

45
namespace Volo.Abp.Http.Client
@@ -11,15 +12,15 @@ public RemoteServiceConfigurationProvider(IOptionsSnapshot<AbpRemoteServiceOptio
1112
{
1213
Options = options.Value;
1314
}
14-
15-
public virtual RemoteServiceConfiguration GetConfigurationOrDefault(string name)
15+
16+
public Task<RemoteServiceConfiguration> GetConfigurationOrDefaultAsync(string name)
1617
{
17-
return Options.RemoteServices.GetConfigurationOrDefault(name);
18+
return Task.FromResult(Options.RemoteServices.GetConfigurationOrDefault(name));
1819
}
19-
20-
public virtual RemoteServiceConfiguration GetConfigurationOrDefaultOrNull(string name)
20+
21+
public Task<RemoteServiceConfiguration> GetConfigurationOrDefaultOrNullAsync(string name)
2122
{
22-
return Options.RemoteServices.GetConfigurationOrDefaultOrNull(name);
23+
return Task.FromResult(Options.RemoteServices.GetConfigurationOrDefaultOrNull(name));
2324
}
2425
}
2526
}

framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,10 @@ private string CreateScript(ProxyScriptingModel scriptingModel)
6464

6565
using (var scope = _serviceProvider.CreateScope())
6666
{
67-
return scope.ServiceProvider.GetRequiredService(generatorType).As<IProxyScriptGenerator>().CreateScript(apiModel);
67+
return scope.ServiceProvider
68+
.GetRequiredService(generatorType)
69+
.As<IProxyScriptGenerator>()
70+
.CreateScript(apiModel);
6871
}
6972
}
7073

0 commit comments

Comments
 (0)