Browse Source

Merge pull request #16086 from abpframework/issue-1810-seo

Add `virtual` to controllers of framework.
pull/16089/head
liangshiwei 4 years ago
committed by GitHub
parent
commit
63c8d2bca1
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 42
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Controllers/ErrorController.cs
  2. 8
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApiExploring/AbpApiDefinitionController.cs
  3. 12
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationController.cs
  4. 34
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationScriptController.cs
  5. 4
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpApplicationLocalizationScriptController.cs
  6. 20
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ProxyScripting/AbpServiceProxyScriptController.cs
  7. 8
      framework/src/Volo.Abp.Swashbuckle/Volo/Abp/Swashbuckle/AbpSwashbuckleController.cs

42
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Controllers/ErrorController.cs

@ -14,12 +14,12 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers;
public class ErrorController : AbpController public class ErrorController : AbpController
{ {
private readonly IExceptionToErrorInfoConverter _errorInfoConverter; protected readonly IExceptionToErrorInfoConverter ErrorInfoConverter;
private readonly IHttpExceptionStatusCodeFinder _statusCodeFinder; protected readonly IHttpExceptionStatusCodeFinder StatusCodeFinder;
private readonly IStringLocalizer<AbpUiResource> _localizer; protected readonly IStringLocalizer<AbpUiResource> Localizer;
private readonly AbpErrorPageOptions _abpErrorPageOptions; protected readonly AbpErrorPageOptions AbpErrorPageOptions;
private readonly IExceptionNotifier _exceptionNotifier; protected readonly IExceptionNotifier ExceptionNotifier;
private readonly AbpExceptionHandlingOptions _exceptionHandlingOptions; protected readonly AbpExceptionHandlingOptions ExceptionHandlingOptions;
public ErrorController( public ErrorController(
IExceptionToErrorInfoConverter exceptionToErrorInfoConverter, IExceptionToErrorInfoConverter exceptionToErrorInfoConverter,
@ -29,33 +29,33 @@ public class ErrorController : AbpController
IExceptionNotifier exceptionNotifier, IExceptionNotifier exceptionNotifier,
IOptions<AbpExceptionHandlingOptions> exceptionHandlingOptions) IOptions<AbpExceptionHandlingOptions> exceptionHandlingOptions)
{ {
_errorInfoConverter = exceptionToErrorInfoConverter; ErrorInfoConverter = exceptionToErrorInfoConverter;
_statusCodeFinder = httpExceptionStatusCodeFinder; StatusCodeFinder = httpExceptionStatusCodeFinder;
_localizer = localizer; Localizer = localizer;
_exceptionNotifier = exceptionNotifier; ExceptionNotifier = exceptionNotifier;
_exceptionHandlingOptions = exceptionHandlingOptions.Value; ExceptionHandlingOptions = exceptionHandlingOptions.Value;
_abpErrorPageOptions = abpErrorPageOptions.Value; AbpErrorPageOptions = abpErrorPageOptions.Value;
} }
public async Task<IActionResult> Index(int httpStatusCode) public virtual async Task<IActionResult> Index(int httpStatusCode)
{ {
var exHandlerFeature = HttpContext.Features.Get<IExceptionHandlerFeature>(); var exHandlerFeature = HttpContext.Features.Get<IExceptionHandlerFeature>();
var exception = exHandlerFeature != null var exception = exHandlerFeature != null
? exHandlerFeature.Error ? exHandlerFeature.Error
: new Exception(_localizer["UnhandledException"]); : new Exception(Localizer["UnhandledException"]);
await _exceptionNotifier.NotifyAsync(new ExceptionNotificationContext(exception)); await ExceptionNotifier.NotifyAsync(new ExceptionNotificationContext(exception));
var errorInfo = _errorInfoConverter.Convert(exception, options => var errorInfo = ErrorInfoConverter.Convert(exception, options =>
{ {
options.SendExceptionsDetailsToClients = _exceptionHandlingOptions.SendExceptionsDetailsToClients; options.SendExceptionsDetailsToClients = ExceptionHandlingOptions.SendExceptionsDetailsToClients;
options.SendStackTraceToClients = _exceptionHandlingOptions.SendStackTraceToClients; options.SendStackTraceToClients = ExceptionHandlingOptions.SendStackTraceToClients;
}); });
if (httpStatusCode == 0) if (httpStatusCode == 0)
{ {
httpStatusCode = (int)_statusCodeFinder.GetStatusCode(HttpContext, exception); httpStatusCode = (int)StatusCodeFinder.GetStatusCode(HttpContext, exception);
} }
HttpContext.Response.StatusCode = httpStatusCode; HttpContext.Response.StatusCode = httpStatusCode;
@ -69,9 +69,9 @@ public class ErrorController : AbpController
}); });
} }
private string GetErrorPageUrl(int statusCode) protected virtual string GetErrorPageUrl(int statusCode)
{ {
var page = _abpErrorPageOptions.ErrorViewUrls.GetOrDefault(statusCode.ToString()); var page = AbpErrorPageOptions.ErrorViewUrls.GetOrDefault(statusCode.ToString());
if (string.IsNullOrWhiteSpace(page)) if (string.IsNullOrWhiteSpace(page))
{ {

8
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApiExploring/AbpApiDefinitionController.cs

@ -8,16 +8,16 @@ namespace Volo.Abp.AspNetCore.Mvc.ApiExploring;
[Route("api/abp/api-definition")] [Route("api/abp/api-definition")]
public class AbpApiDefinitionController : AbpController, IRemoteService public class AbpApiDefinitionController : AbpController, IRemoteService
{ {
private readonly IApiDescriptionModelProvider _modelProvider; protected readonly IApiDescriptionModelProvider ModelProvider;
public AbpApiDefinitionController(IApiDescriptionModelProvider modelProvider) public AbpApiDefinitionController(IApiDescriptionModelProvider modelProvider)
{ {
_modelProvider = modelProvider; ModelProvider = modelProvider;
} }
[HttpGet] [HttpGet]
public ApplicationApiDescriptionModel Get(ApplicationApiDescriptionModelRequestDto model) public virtual ApplicationApiDescriptionModel Get(ApplicationApiDescriptionModelRequestDto model)
{ {
return _modelProvider.CreateApiModel(model); return ModelProvider.CreateApiModel(model);
} }
} }

12
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationController.cs

@ -9,22 +9,22 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
[Route("api/abp/application-configuration")] [Route("api/abp/application-configuration")]
public class AbpApplicationConfigurationController : AbpControllerBase, IAbpApplicationConfigurationAppService public class AbpApplicationConfigurationController : AbpControllerBase, IAbpApplicationConfigurationAppService
{ {
private readonly IAbpApplicationConfigurationAppService _applicationConfigurationAppService; protected readonly IAbpApplicationConfigurationAppService ApplicationConfigurationAppService;
private readonly IAbpAntiForgeryManager _antiForgeryManager; protected readonly IAbpAntiForgeryManager AntiForgeryManager;
public AbpApplicationConfigurationController( public AbpApplicationConfigurationController(
IAbpApplicationConfigurationAppService applicationConfigurationAppService, IAbpApplicationConfigurationAppService applicationConfigurationAppService,
IAbpAntiForgeryManager antiForgeryManager) IAbpAntiForgeryManager antiForgeryManager)
{ {
_applicationConfigurationAppService = applicationConfigurationAppService; ApplicationConfigurationAppService = applicationConfigurationAppService;
_antiForgeryManager = antiForgeryManager; AntiForgeryManager = antiForgeryManager;
} }
[HttpGet] [HttpGet]
public virtual async Task<ApplicationConfigurationDto> GetAsync( public virtual async Task<ApplicationConfigurationDto> GetAsync(
ApplicationConfigurationRequestOptions options) ApplicationConfigurationRequestOptions options)
{ {
_antiForgeryManager.SetCookie(); AntiForgeryManager.SetCookie();
return await _applicationConfigurationAppService.GetAsync(options); return await ApplicationConfigurationAppService.GetAsync(options);
} }
} }

34
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationScriptController.cs

@ -17,11 +17,11 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
[ApiExplorerSettings(IgnoreApi = true)] [ApiExplorerSettings(IgnoreApi = true)]
public class AbpApplicationConfigurationScriptController : AbpController public class AbpApplicationConfigurationScriptController : AbpController
{ {
private readonly AbpApplicationConfigurationAppService _configurationAppService; protected readonly AbpApplicationConfigurationAppService ConfigurationAppService;
private readonly IJsonSerializer _jsonSerializer; protected readonly IJsonSerializer JsonSerializer;
private readonly AbpAspNetCoreMvcOptions _options; protected readonly AbpAspNetCoreMvcOptions Options;
private readonly IJavascriptMinifier _javascriptMinifier; protected readonly IJavascriptMinifier JavascriptMinifier;
private readonly IAbpAntiForgeryManager _antiForgeryManager; protected readonly IAbpAntiForgeryManager AntiForgeryManager;
public AbpApplicationConfigurationScriptController( public AbpApplicationConfigurationScriptController(
AbpApplicationConfigurationAppService configurationAppService, AbpApplicationConfigurationAppService configurationAppService,
@ -30,42 +30,42 @@ public class AbpApplicationConfigurationScriptController : AbpController
IJavascriptMinifier javascriptMinifier, IJavascriptMinifier javascriptMinifier,
IAbpAntiForgeryManager antiForgeryManager) IAbpAntiForgeryManager antiForgeryManager)
{ {
_configurationAppService = configurationAppService; ConfigurationAppService = configurationAppService;
_jsonSerializer = jsonSerializer; JsonSerializer = jsonSerializer;
_options = options.Value; Options = options.Value;
_javascriptMinifier = javascriptMinifier; JavascriptMinifier = javascriptMinifier;
_antiForgeryManager = antiForgeryManager; AntiForgeryManager = antiForgeryManager;
} }
[HttpGet] [HttpGet]
[Produces(MimeTypes.Application.Javascript, MimeTypes.Text.Plain)] [Produces(MimeTypes.Application.Javascript, MimeTypes.Text.Plain)]
public async Task<ActionResult> Get() public virtual async Task<ActionResult> Get()
{ {
var script = CreateAbpExtendScript( var script = CreateAbpExtendScript(
await _configurationAppService.GetAsync( await ConfigurationAppService.GetAsync(
new ApplicationConfigurationRequestOptions { new ApplicationConfigurationRequestOptions {
IncludeLocalizationResources = false IncludeLocalizationResources = false
} }
) )
); );
_antiForgeryManager.SetCookie(); AntiForgeryManager.SetCookie();
return Content( return Content(
_options.MinifyGeneratedScript == true Options.MinifyGeneratedScript == true
? _javascriptMinifier.Minify(script) ? JavascriptMinifier.Minify(script)
: script, : script,
MimeTypes.Application.Javascript MimeTypes.Application.Javascript
); );
} }
private string CreateAbpExtendScript(ApplicationConfigurationDto config) protected virtual string CreateAbpExtendScript(ApplicationConfigurationDto config)
{ {
var script = new StringBuilder(); var script = new StringBuilder();
script.AppendLine("(function(){"); script.AppendLine("(function(){");
script.AppendLine(); script.AppendLine();
script.AppendLine($"$.extend(true, abp, {_jsonSerializer.Serialize(config, indented: true)})"); script.AppendLine($"$.extend(true, abp, {JsonSerializer.Serialize(config, indented: true)})");
script.AppendLine(); script.AppendLine();
script.AppendLine("abp.event.trigger('abp.configurationInitialized');"); script.AppendLine("abp.event.trigger('abp.configurationInitialized');");
script.AppendLine(); script.AppendLine();

4
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpApplicationLocalizationScriptController.cs

@ -39,7 +39,7 @@ public class AbpApplicationLocalizationScriptController : AbpController
[HttpGet] [HttpGet]
[Produces(MimeTypes.Application.Javascript, MimeTypes.Text.Plain)] [Produces(MimeTypes.Application.Javascript, MimeTypes.Text.Plain)]
public async Task<ActionResult> GetAsync(ApplicationLocalizationRequestDto input) public virtual async Task<ActionResult> GetAsync(ApplicationLocalizationRequestDto input)
{ {
var script = CreateScript( var script = CreateScript(
await LocalizationAppService.GetAsync(input) await LocalizationAppService.GetAsync(input)
@ -53,7 +53,7 @@ public class AbpApplicationLocalizationScriptController : AbpController
); );
} }
private string CreateScript(ApplicationLocalizationDto localizationDto) protected virtual string CreateScript(ApplicationLocalizationDto localizationDto)
{ {
var script = new StringBuilder(); var script = new StringBuilder();

20
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ProxyScripting/AbpServiceProxyScriptController.cs

@ -14,30 +14,30 @@ namespace Volo.Abp.AspNetCore.Mvc.ProxyScripting;
[ApiExplorerSettings(IgnoreApi = true)] [ApiExplorerSettings(IgnoreApi = true)]
public class AbpServiceProxyScriptController : AbpController public class AbpServiceProxyScriptController : AbpController
{ {
private readonly IProxyScriptManager _proxyScriptManager; protected readonly IProxyScriptManager ProxyScriptManager;
private readonly AbpAspNetCoreMvcOptions _options; protected readonly AbpAspNetCoreMvcOptions Options;
private readonly IJavascriptMinifier _javascriptMinifier; protected readonly IJavascriptMinifier JavascriptMinifier;
public AbpServiceProxyScriptController(IProxyScriptManager proxyScriptManager, public AbpServiceProxyScriptController(IProxyScriptManager proxyScriptManager,
IOptions<AbpAspNetCoreMvcOptions> options, IOptions<AbpAspNetCoreMvcOptions> options,
IJavascriptMinifier javascriptMinifier) IJavascriptMinifier javascriptMinifier)
{ {
_proxyScriptManager = proxyScriptManager; ProxyScriptManager = proxyScriptManager;
_options = options.Value; Options = options.Value;
_javascriptMinifier = javascriptMinifier; JavascriptMinifier = javascriptMinifier;
} }
[HttpGet] [HttpGet]
[Produces(MimeTypes.Application.Javascript, MimeTypes.Text.Plain)] [Produces(MimeTypes.Application.Javascript, MimeTypes.Text.Plain)]
public ActionResult GetAll(ServiceProxyGenerationModel model) public virtual ActionResult GetAll(ServiceProxyGenerationModel model)
{ {
model.Normalize(); model.Normalize();
var script = _proxyScriptManager.GetScript(model.CreateOptions()); var script = ProxyScriptManager.GetScript(model.CreateOptions());
return Content( return Content(
_options.MinifyGeneratedScript == true Options.MinifyGeneratedScript == true
? _javascriptMinifier.Minify(script) ? JavascriptMinifier.Minify(script)
: script, : script,
MimeTypes.Application.Javascript MimeTypes.Application.Javascript
); );

8
framework/src/Volo.Abp.Swashbuckle/Volo/Abp/Swashbuckle/AbpSwashbuckleController.cs

@ -12,16 +12,16 @@ namespace Volo.Abp.Swashbuckle;
[ApiExplorerSettings(IgnoreApi = true)] [ApiExplorerSettings(IgnoreApi = true)]
public class AbpSwashbuckleController : AbpController public class AbpSwashbuckleController : AbpController
{ {
private readonly IAbpAntiForgeryManager _antiForgeryManager; protected readonly IAbpAntiForgeryManager AntiForgeryManager;
public AbpSwashbuckleController(IAbpAntiForgeryManager antiForgeryManager) public AbpSwashbuckleController(IAbpAntiForgeryManager antiForgeryManager)
{ {
_antiForgeryManager = antiForgeryManager; AntiForgeryManager = antiForgeryManager;
} }
[HttpGet] [HttpGet]
public void SetCsrfCookie() public virtual void SetCsrfCookie()
{ {
_antiForgeryManager.SetCookie(); AntiForgeryManager.SetCookie();
} }
} }

Loading…
Cancel
Save