/// <summary> /// LogExeception logs exception details as Error. /// </summary> /// <param name="logger"></param> /// <param name="ex"></param> /// <param name="headerValue"></param> public static void LogExeception(this ILogger logger, Exception ex, IHeaderValue headerValue) { var applicationKey = headerValue != null ? headerValue.ApplicationKey : String.Empty; var message = string.Format(LoggerExtensions.ExceptionMethodMessage, applicationKey) + ex.ExeceptionMessage(); logger?.LogError(message); }
/// <summary> /// HandleExceptionAsync creates response in case of exception. /// </summary> /// <param name="context"></param> /// <param name="exception"></param> /// <param name="headerValue"></param> /// <returns></returns> private Task HandleExceptionAsync(HttpContext context, Exception exception, IHeaderValue headerValue) { var code = HttpStatusCode.InternalServerError; // 500 if unexpected if (exception is EntryPointNotFoundException) { code = HttpStatusCode.NotFound; } else if (exception is AccessViolationException) { code = HttpStatusCode.Forbidden; } else if (exception is UnauthorizedAccessException) { code = HttpStatusCode.Unauthorized; } else if (exception is DatabaseException) { code = HttpStatusCode.BadRequest; } var result = JsonConvert.SerializeObject(new { error = exception.Message }); context.Response.ContentType = Constant.JsonContentType; context.Response.StatusCode = (int)code; base.Logger?.LogExeception(exception, headerValue); return(context.Response.WriteAsync(result)); }
/// <summary> /// APIBaseController initializes class object. /// </summary> /// <param name="headerValue"></param> /// <param name="configuration"></param> /// <param name="logger"></param> public APIBaseController(IHeaderValue headerValue, IConfiguration configuration, ILogger logger) { this.HeaderValue = headerValue; this.Configuration = configuration; this.Logger = logger; this.Logger?.LogEnterConstructor(this.GetType(), this.HeaderValue); this.UseDefaultLanguage = this.HeaderValue != null && this.HeaderValue.AcceptLangauage == this.Configuration["General:SecondaryLanguage"] ? false : true; }
/// <summary> /// Invoke method is called when middleware has been called. /// </summary> /// <param name="context"></param> /// <param name="headerValue"></param> /// <returns></returns> public async Task Invoke(HttpContext context, IHeaderValue headerValue) { try { await this.Next(context); } catch (Exception ex) { await this.HandleExceptionAsync(context, ex, headerValue); } }
/// <summary> /// Invoke method is called when middleware has been called. /// </summary> /// <param name="context"></param> /// <param name="headerValue"></param> /// <returns></returns> public async Task Invoke(HttpContext context, IHeaderValue headerValue) { try { if (context != null && context.Request != null && context.Request.Headers != null) { headerValue.ApplicationKey = this.GetHeaderValue(context.Request.Headers, HeaderValueMiddleware.ApplicationKeyName); headerValue.AcceptLangauage = this.GetAcceptLanguage(context.Request.Headers); } } catch { //TODO: only acceptable if header values can be optional. } await this.Next(context); }
/// <summary> /// ChannelController initializes class object. /// </summary> /// <param name="ChannelApplication"></param> /// <param name="headerValue"></param> /// <param name="configuration"></param> /// <param name="logger"></param> public ChannelController(IChannelApplication ChannelApplication, IHeaderValue headerValue, IConfiguration configuration, ILogger <ChannelController> logger) : base(headerValue, configuration, logger) { this.ChannelApplication = ChannelApplication; }
/// <summary> /// LogExitMethod logs message as information. /// </summary> /// <param name="logger"></param> /// <param name="callerClass"></param> /// <param name="callerMethod"></param> /// <param name="headerValue"></param> /// <param name="dataItems"></param> public static void LogExitMethod(this ILogger logger, Type callerClass, MethodBase callerMethod, IHeaderValue headerValue, params object[] dataItems) { var applicationKey = headerValue != null ? headerValue.ApplicationKey : String.Empty; var data = JsonConvert.SerializeObject(dataItems); var message = string.Format(LoggerExtensions.ExitMethodMessage, callerClass.FullName, callerMethod.Name, applicationKey, data); logger?.LogInformation(message); }
/// <summary> /// LogEnterConstructor logs message as information. /// </summary> /// <param name="logger"></param> /// <param name="callerClass"></param> /// <param name="headerValue"></param> public static void LogEnterConstructor(this ILogger logger, Type callerClass, IHeaderValue headerValue = null) { var applicationKey = headerValue != null ? headerValue.ApplicationKey : String.Empty; var message = string.Format(LoggerExtensions.EnterConstructorMessage, callerClass.FullName, applicationKey); logger?.LogInformation(message); }
/// <summary> /// AccountController initializes class object . /// </summary> /// <param name="userApplication"></param> /// <param name="dealerApplication"></param> /// <param name="dealershipApplication"></param> /// <param name="employeeApplication"></param> /// <param name="roleApplication"></param> /// <param name="emailServiceConnector"></param> /// <param name="headerValue"></param> /// <param name="configuration"></param> /// <param name="logger"></param> public AccountController(IUserApplication userApplication, IEmailApplication emailApplication, IEmployeeApplication employeeApplication, IRoleApplication roleApplication, IClaimApplication claimApplication, IEmailServiceConnector emailServiceConnector, IHeaderValue headerValue, IConfiguration configuration, ILogger <AccountController> logger) : base(headerValue, configuration, logger) { this.UserApplication = userApplication; this.EmployeeApplication = employeeApplication; this.RoleApplication = roleApplication; this.EmailServiceConnector = emailServiceConnector; this.EmailApplication = emailApplication; this.ClaimApplication = claimApplication; }
/// <summary> /// ClaimGroupController initializes class object. /// </summary> /// <param name="claimGroupApplication"></param> /// <param name="headerValue"></param> /// <param name="configuration"></param> /// <param name="logger"></param> public ClaimGroupController(IClaimGroupApplication claimGroupApplication, IHeaderValue headerValue, IConfiguration configuration, ILogger <ClaimGroupController> logger) : base(headerValue, configuration, logger) { this.ClaimGroupApplication = claimGroupApplication; }
/// <summary> /// RoleController initializes class object. /// </summary> /// <param name="roleApplication"></param> /// <param name="headerValue"></param> /// <param name="configuration"></param> /// <param name="logger"></param> public RoleController(IRoleApplication roleApplication, IHeaderValue headerValue, IConfiguration configuration, ILogger <RoleController> logger) : base(headerValue, configuration, logger) { this.RoleApplication = roleApplication; }