/// <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);
        }
示例#2
0
        /// <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));
        }
示例#3
0
        /// <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;
        }
示例#4
0
 /// <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);
     }
 }
示例#5
0
        /// <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;
 }
示例#11
0
 /// <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;
 }