Added ApplicationConfigurationRequestOptions.

pull/13845/head
Halil İbrahim Kalkan 3 years ago
parent 01824061d3
commit 411ce81560

@ -15,8 +15,11 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClientProxies;
[ExposeServices(typeof(IAbpApplicationConfigurationAppService), typeof(AbpApplicationConfigurationClientProxy))] [ExposeServices(typeof(IAbpApplicationConfigurationAppService), typeof(AbpApplicationConfigurationClientProxy))]
public partial class AbpApplicationConfigurationClientProxy : ClientProxyBase<IAbpApplicationConfigurationAppService>, IAbpApplicationConfigurationAppService public partial class AbpApplicationConfigurationClientProxy : ClientProxyBase<IAbpApplicationConfigurationAppService>, IAbpApplicationConfigurationAppService
{ {
public virtual async Task<ApplicationConfigurationDto> GetAsync() public virtual async Task<ApplicationConfigurationDto> GetAsync(ApplicationConfigurationRequestOptions options)
{ {
return await RequestAsync<ApplicationConfigurationDto>(nameof(GetAsync)); return await RequestAsync<ApplicationConfigurationDto>(nameof(GetAsync), new ClientProxyRequestTypeValue
{
{ typeof(ApplicationConfigurationRequestOptions), options }
});
} }
} }

@ -104,14 +104,36 @@
} }
], ],
"actions": { "actions": {
"GetAsync": { "GetAsyncByOptions": {
"uniqueName": "GetAsync", "uniqueName": "GetAsyncByOptions",
"name": "GetAsync", "name": "GetAsync",
"httpMethod": "GET", "httpMethod": "GET",
"url": "api/abp/application-configuration", "url": "api/abp/application-configuration",
"supportedVersions": [], "supportedVersions": [],
"parametersOnMethod": [], "parametersOnMethod": [
"parameters": [], {
"name": "options",
"typeAsString": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationRequestOptions, Volo.Abp.AspNetCore.Mvc.Contracts",
"type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationRequestOptions",
"typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationRequestOptions",
"isOptional": false,
"defaultValue": null
}
],
"parameters": [
{
"nameOnMethod": "options",
"name": "IncludeLocalizationResources",
"jsonName": null,
"type": "System.Boolean",
"typeSimple": "boolean",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": "options"
}
],
"returnValue": { "returnValue": {
"type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto", "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto",
"typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto" "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto"

@ -48,7 +48,11 @@ public class MvcCachedApplicationConfigurationClient : ICachedApplicationConfigu
configuration = await Cache.GetOrAddAsync( configuration = await Cache.GetOrAddAsync(
cacheKey, cacheKey,
async () => await ApplicationConfigurationAppService.GetAsync(), async () => await ApplicationConfigurationAppService.GetAsync(
new ApplicationConfigurationRequestOptions
{
IncludeLocalizationResources = false
}),
() => new DistributedCacheEntryOptions () => new DistributedCacheEntryOptions
{ {
AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(300) //TODO: Should be configurable. AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(300) //TODO: Should be configurable.

@ -0,0 +1,6 @@
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
public class ApplicationConfigurationRequestOptions
{
public bool IncludeLocalizationResources { get; set; } = true;
}

@ -5,5 +5,5 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
public interface IAbpApplicationConfigurationAppService : IApplicationService public interface IAbpApplicationConfigurationAppService : IApplicationService
{ {
Task<ApplicationConfigurationDto> GetAsync(); Task<ApplicationConfigurationDto> GetAsync(ApplicationConfigurationRequestOptions options);
} }

@ -43,7 +43,6 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
private readonly ITimezoneProvider _timezoneProvider; private readonly ITimezoneProvider _timezoneProvider;
private readonly AbpClockOptions _abpClockOptions; private readonly AbpClockOptions _abpClockOptions;
private readonly ICachedObjectExtensionsDtoService _cachedObjectExtensionsDtoService; private readonly ICachedObjectExtensionsDtoService _cachedObjectExtensionsDtoService;
private readonly AbpExternalLocalizationOptions _externalLocalizationOptions;
private readonly AbpApplicationConfigurationOptions _options; private readonly AbpApplicationConfigurationOptions _options;
public AbpApplicationConfigurationAppService( public AbpApplicationConfigurationAppService(
@ -63,8 +62,7 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
ITimezoneProvider timezoneProvider, ITimezoneProvider timezoneProvider,
IOptions<AbpClockOptions> abpClockOptions, IOptions<AbpClockOptions> abpClockOptions,
ICachedObjectExtensionsDtoService cachedObjectExtensionsDtoService, ICachedObjectExtensionsDtoService cachedObjectExtensionsDtoService,
IOptions<AbpApplicationConfigurationOptions> options, IOptions<AbpApplicationConfigurationOptions> options)
IOptions<AbpExternalLocalizationOptions> distributedLocalizationOptions)
{ {
_serviceProvider = serviceProvider; _serviceProvider = serviceProvider;
_abpAuthorizationPolicyProvider = abpAuthorizationPolicyProvider; _abpAuthorizationPolicyProvider = abpAuthorizationPolicyProvider;
@ -80,13 +78,12 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
_timezoneProvider = timezoneProvider; _timezoneProvider = timezoneProvider;
_abpClockOptions = abpClockOptions.Value; _abpClockOptions = abpClockOptions.Value;
_cachedObjectExtensionsDtoService = cachedObjectExtensionsDtoService; _cachedObjectExtensionsDtoService = cachedObjectExtensionsDtoService;
_externalLocalizationOptions = distributedLocalizationOptions.Value;
_options = options.Value; _options = options.Value;
_localizationOptions = localizationOptions.Value; _localizationOptions = localizationOptions.Value;
_multiTenancyOptions = multiTenancyOptions.Value; _multiTenancyOptions = multiTenancyOptions.Value;
} }
public virtual async Task<ApplicationConfigurationDto> GetAsync() public virtual async Task<ApplicationConfigurationDto> GetAsync(ApplicationConfigurationRequestOptions options)
{ {
//TODO: Optimize & cache..? //TODO: Optimize & cache..?
@ -97,7 +94,7 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
Auth = await GetAuthConfigAsync(), Auth = await GetAuthConfigAsync(),
Features = await GetFeaturesConfigAsync(), Features = await GetFeaturesConfigAsync(),
GlobalFeatures = await GetGlobalFeaturesConfigAsync(), GlobalFeatures = await GetGlobalFeaturesConfigAsync(),
Localization = await GetLocalizationConfigAsync(), Localization = await GetLocalizationConfigAsync(options),
CurrentUser = GetCurrentUser(), CurrentUser = GetCurrentUser(),
Setting = await GetSettingConfigAsync(), Setting = await GetSettingConfigAsync(),
MultiTenancy = GetMultiTenancy(), MultiTenancy = GetMultiTenancy(),
@ -209,36 +206,42 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
return authConfig; return authConfig;
} }
protected virtual async Task<ApplicationLocalizationConfigurationDto> GetLocalizationConfigAsync() protected virtual async Task<ApplicationLocalizationConfigurationDto> GetLocalizationConfigAsync(
ApplicationConfigurationRequestOptions options)
{ {
var localizationConfig = new ApplicationLocalizationConfigurationDto(); var localizationConfig = new ApplicationLocalizationConfigurationDto();
localizationConfig.Languages.AddRange(await _languageProvider.GetLanguagesAsync()); localizationConfig.Languages.AddRange(await _languageProvider.GetLanguagesAsync());
var externalResourceNames = await LazyServiceProvider if (options.IncludeLocalizationResources)
.LazyGetRequiredService<IExternalLocalizationStore>()
.GetResourceNamesAsync();
var resourceNames = _localizationOptions
.Resources
.Values
.Select(x => x.ResourceName)
.Union(externalResourceNames);
foreach (var resourceName in resourceNames)
{ {
var dictionary = new Dictionary<string, string>(); var resourceNames = _localizationOptions
.Resources
var localizer = await StringLocalizerFactory.CreateByResourceNameOrNullAsync(resourceName); .Values
if (localizer != null) .Select(x => x.ResourceName)
.Union(
await LazyServiceProvider
.LazyGetRequiredService<IExternalLocalizationStore>()
.GetResourceNamesAsync()
);
foreach (var resourceName in resourceNames)
{ {
foreach (var localizedString in await localizer.GetAllStringsAsync()) var dictionary = new Dictionary<string, string>();
var localizer = await StringLocalizerFactory
.CreateByResourceNameOrNullAsync(resourceName);
if (localizer != null)
{ {
dictionary[localizedString.Name] = localizedString.Value; foreach (var localizedString in await localizer.GetAllStringsAsync())
{
dictionary[localizedString.Name] = localizedString.Value;
}
} }
}
localizationConfig.Values[resourceName] = dictionary; localizationConfig.Values[resourceName] = dictionary;
}
} }
localizationConfig.CurrentCulture = GetCurrentCultureInfo(); localizationConfig.CurrentCulture = GetCurrentCultureInfo();

@ -21,9 +21,10 @@ public class AbpApplicationConfigurationController : AbpControllerBase, IAbpAppl
} }
[HttpGet] [HttpGet]
public virtual async Task<ApplicationConfigurationDto> GetAsync() public virtual async Task<ApplicationConfigurationDto> GetAsync(
ApplicationConfigurationRequestOptions options)
{ {
_antiForgeryManager.SetCookie(); _antiForgeryManager.SetCookie();
return await _applicationConfigurationAppService.GetAsync(); return await _applicationConfigurationAppService.GetAsync(options);
} }
} }

@ -41,7 +41,11 @@ public class AbpApplicationConfigurationScriptController : AbpController
[Produces(MimeTypes.Application.Javascript, MimeTypes.Text.Plain)] [Produces(MimeTypes.Application.Javascript, MimeTypes.Text.Plain)]
public async Task<ActionResult> Get() public async Task<ActionResult> Get()
{ {
var script = CreateAbpExtendScript(await _configurationAppService.GetAsync()); var script = CreateAbpExtendScript(await _configurationAppService.GetAsync(
new ApplicationConfigurationRequestOptions {
IncludeLocalizationResources = false
}
));
_antiForgeryManager.SetCookie(); _antiForgeryManager.SetCookie();

@ -118,7 +118,10 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
return value; return value;
} }
protected virtual LocalizedString GetLocalizedStringOrNull(string name, string cultureName, bool tryDefaults = true) protected virtual LocalizedString GetLocalizedStringOrNull(
string name,
string cultureName,
bool tryDefaults = true)
{ {
//Try to get from original dictionary (with country code) //Try to get from original dictionary (with country code)
var strOriginal = Resource.Contributors.GetOrNull(cultureName, name); var strOriginal = Resource.Contributors.GetOrNull(cultureName, name);

@ -12,7 +12,7 @@ public class ApplicationConfigurationBuilder_Tests : AspNetCoreMvcTestBase
{ {
var applicationConfigurationBuilder = GetRequiredService<IAbpApplicationConfigurationAppService>(); var applicationConfigurationBuilder = GetRequiredService<IAbpApplicationConfigurationAppService>();
var config = await applicationConfigurationBuilder.GetAsync(); var config = await applicationConfigurationBuilder.GetAsync(new ApplicationConfigurationRequestOptions());
config.Auth.ShouldNotBeNull(); config.Auth.ShouldNotBeNull();
config.Localization.ShouldNotBeNull(); config.Localization.ShouldNotBeNull();

Loading…
Cancel
Save