Initial Commit ...
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
using System;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using xCommons.Attributes;
|
||||
using xCommons.Configurations;
|
||||
using xCommons.Extensions;
|
||||
using xCommons.Providers;
|
||||
using xExceptions.Constants;
|
||||
|
||||
namespace xCommons.Controllers {
|
||||
/// <summary>
|
||||
/// Base Controller
|
||||
/// </summary>
|
||||
[Route ("[controller]")]
|
||||
[Produces ("application/json")]
|
||||
public abstract partial class XBaseController : ControllerBase {
|
||||
public ILogger Logger { get; }
|
||||
public XAppConfiguration AppConfiguration { get; }
|
||||
public XValidationProvider ValidationProvider { get; }
|
||||
|
||||
public XBaseController (
|
||||
ILogger logger,
|
||||
XAppConfiguration appConfiguration,
|
||||
XValidationProvider validationProvider
|
||||
) {
|
||||
Logger = logger;
|
||||
AppConfiguration = appConfiguration;
|
||||
ValidationProvider = validationProvider;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check the Controller Up and Running
|
||||
/// </summary>
|
||||
/// <returns>string message</returns>
|
||||
[HttpGet]
|
||||
[Route ("Test/Hi")]
|
||||
[AllowAnonymous]
|
||||
public virtual IActionResult Hi () {
|
||||
//
|
||||
var controllerName = GetControllerName ();
|
||||
var message = $"{controllerName} Controller is Up and running ...";
|
||||
|
||||
//
|
||||
return Ok (message);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check Controller ByPass XPowered Filter
|
||||
/// </summary>
|
||||
/// <returns>string message</returns>
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
[RequireXPowered (false)]
|
||||
[Route ("Test/PassRequireXPowered")]
|
||||
public virtual IActionResult PassRequireXPowered () {
|
||||
//
|
||||
var controllerName = GetControllerName ();
|
||||
var message = $"{controllerName} Controller bypass RequiredXPowered and Up and running ...";
|
||||
|
||||
//
|
||||
return Ok (message);
|
||||
}
|
||||
|
||||
//
|
||||
#region Non Actions ...
|
||||
/// <summary>
|
||||
/// Convert an Exception to Propper Error Result
|
||||
/// </summary>
|
||||
/// <param name="ex"></param>
|
||||
/// <returns></returns>
|
||||
[NonAction]
|
||||
public ActionResult GetExceptionActionResult (Exception ex) {
|
||||
//
|
||||
var exception = GetExceptionResult (ex);
|
||||
var error = ex.Message.ToXError ();
|
||||
|
||||
//
|
||||
Logger.LogError ($"exception: {exception}, error: {error}");
|
||||
|
||||
//
|
||||
try {
|
||||
var xError = exception.Message.ToXError ();
|
||||
var xException = (XException) xError.Id;
|
||||
|
||||
//
|
||||
switch (xException) {
|
||||
//
|
||||
case XException.NotFound:
|
||||
return NotFound (error);
|
||||
|
||||
//
|
||||
case XException.NotAuthorized:
|
||||
return Unauthorized ();
|
||||
}
|
||||
} catch { }
|
||||
|
||||
//
|
||||
return BadRequest (error);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return Structured Exception
|
||||
/// </summary>
|
||||
/// <param name="ex"></param>
|
||||
/// <returns></returns>
|
||||
[NonAction]
|
||||
public Exception GetExceptionResult (Exception ex) {
|
||||
//
|
||||
// Log Exception Message ...
|
||||
Logger.LogError (ex.Message);
|
||||
|
||||
//
|
||||
// if Happens Exception is Know Error
|
||||
// catch it and return it in BadRequest Container ...
|
||||
var isEr = ex.Message.IsXError ();
|
||||
|
||||
//
|
||||
if (isEr) {
|
||||
return ex;
|
||||
}
|
||||
|
||||
//
|
||||
// if catched Exception Contains Unknown Error
|
||||
// return an Unknown Error ...
|
||||
return XException.Unknown.ToException ();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve ControllerName
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[NonAction]
|
||||
public string GetControllerName () {
|
||||
return this.ControllerContext.RouteData.Values["controller"].ToString ();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user