public ApiResult(bool isSuccess, ApiResultStatusCode statusCode, string message = null
                  )
 {
     IsSuccess  = isSuccess;
     StatusCode = statusCode;
     Message    = message ?? statusCode.ToDisplay();
 }
 public AppException(ApiResultStatusCode statusCode, string message, HttpStatusCode httpStatusCode, Exception exception, object additionalData)
     : base(message, exception)
 {
     ApiStatusCode  = statusCode;
     HttpStatusCode = httpStatusCode;
     AdditionalData = additionalData;
 }
        public async Task Invoke(HttpContext context)
        {
            string              message        = null;
            HttpStatusCode      httpStatusCode = HttpStatusCode.InternalServerError;
            ApiResultStatusCode apiStatusCode  = ApiResultStatusCode.ServerError;

            try
            {
                await _next(context);
            }
            catch (Exception exception)
            {
                _logger.LogError(exception, exception.Message);

                if (_env.IsDevelopment())
                {
                    var dic = new Dictionary <string, string>
                    {
                        ["Exception"]  = exception.Message,
                        ["StackTrace"] = exception.StackTrace,
                    };
                    message = JsonConvert.SerializeObject(dic);
                }
                await WriteToResponseAsync();
            }

            async Task WriteToResponseAsync()
            {
                if (context.Response.HasStarted)
                {
                    throw new InvalidOperationException("The response has already started, the http status code middleware will not be executed.");
                }

                var result = new ApiResult(false, apiStatusCode, message);
                var json   = JsonConvert.SerializeObject(result);

                context.Response.StatusCode  = (int)httpStatusCode;
                context.Response.ContentType = "application/json";
                await context.Response.WriteAsync(json);
            }
        }
Example #4
0
        public async Task Invoke(HttpContext context)
        {
            List <string>       Message             = new List <string>();
            HttpStatusCode      httpStatusCode      = HttpStatusCode.InternalServerError;
            ApiResultStatusCode apiResultStatusCode = ApiResultStatusCode.ServerError;

            try
            {
                await _next(context);
            }
            catch (Exception ex)
            {
                if (_env.IsDevelopment())
                {
                    var error = new Dictionary <string, string>
                    {
                        ["Exception"]  = ex.Message,
                        ["StackTrace"] = ex.StackTrace
                    };
                    Message.Add(JsonConvert.SerializeObject(error));
                }
                else
                {
                    Message.Add("خطایی رخ داده است");
                }
                await WriteToResponseAsync();
            }
            async Task WriteToResponseAsync()
            {
                var result     = new ApiResult(false, apiResultStatusCode, Message);
                var jsonResult = JsonConvert.SerializeObject(result);

                context.Response.StatusCode  = (int)httpStatusCode;
                context.Response.ContentType = "application/json";

                await context.Response.WriteAsync(jsonResult);
            }
        }
 public AppException(ApiResultStatusCode statusCode)
     : this(statusCode, null)
 {
 }
        public async Task Invoke(HttpContext context)
        {
            List <string>       message         = new List <string>();
            HttpStatusCode      httpStatusCode  = HttpStatusCode.InternalServerError;
            ApiResultStatusCode apiResultStatus = ApiResultStatusCode.ServerError;

            try
            {
                await _next(context);
            }

            catch (AppException exception)
            {
                httpStatusCode  = exception.HttpStatusCode;
                apiResultStatus = exception.ApiStatusCode;

                if (_evn.IsDevelopment())
                {
                    var dic = new Dictionary <string, string>
                    {
                        ["Exception"]  = exception.Message,
                        ["StackTrace"] = exception.StackTrace,
                    };
                    if (exception.InnerException != null)
                    {
                        dic.Add("InnerException.Exception", exception.InnerException.Message);
                        dic.Add("InnerException.StackTrace", exception.InnerException.StackTrace);
                    }
                    if (exception.AdditionalData != null)
                    {
                        dic.Add("AdditionalData", JsonConvert.SerializeObject(exception.AdditionalData));
                    }

                    message.Add(JsonConvert.SerializeObject(dic));
                }
                else
                {
                    message.Add("خطایی رخ داده است.");
                }
                await WriteToResponseAsync();
            }

            catch (Exception exception)
            {
                if (_evn.IsDevelopment())
                {
                    var error = new Dictionary <string, string>
                    {
                        ["Exception"]  = exception.Message,
                        ["StackTrace"] = exception.StackTrace,
                    };
                    message.Add(JsonConvert.SerializeObject(error));
                }

                else
                {
                    message.Add("خطایی رخ داده است.");
                }

                await WriteToResponseAsync();
            }

            async Task WriteToResponseAsync()
            {
                var result     = new ApiResult(false, apiResultStatus, message);
                var jsonResult = JsonConvert.SerializeObject(result);

                context.Response.StatusCode  = (int)httpStatusCode;
                context.Response.ContentType = "application/json";

                await context.Response.WriteAsync(jsonResult);
            }
        }
        public ApiResult(ApiResultStatusCode apiResultStatusCode, string message = null)
        {
            ApiResultStatusCode = apiResultStatusCode;

            Message = message ?? apiResultStatusCode.ToDisplay();
        }
 public AppException(ApiResultStatusCode statusCode, string message, HttpStatusCode httpStatusCode, Exception exception)
     : this(statusCode, message, httpStatusCode, exception, null)
 {
 }
 public AppException(ApiResultStatusCode statusCode, string message, Exception exception)
     : this(statusCode, message, HttpStatusCode.InternalServerError, exception)
 {
 }
Example #10
0
 public ApiException()
 {
     StatusCode = ApiResultStatusCode.ServerError;
 }
Example #11
0
 public CleanArchAppException(ApiResultStatusCode statusCode, string message, HttpStatusCode httpStatusCode)
     : this(statusCode, message, httpStatusCode, null)
 {
 }
Example #12
0
 public CleanArchAppException(ApiResultStatusCode statusCode, string message)
     : this(statusCode, message, HttpStatusCode.InternalServerError)
 {
 }
        public async Task Invoke(HttpContext context)
        {
            string              message        = null;
            HttpStatusCode      httpStatusCode = HttpStatusCode.InternalServerError;
            ApiResultStatusCode apiStatusCode  = ApiResultStatusCode.ServerError;

            try
            {
                var isAjax            = context.Request.IsAjax();
                var isPostAjax        = context.Request.IsAjax("POST");
                var isSentFromPostMan = context.Request.Headers.ContainsKey("Postman-Token");
                if (isSentFromPostMan)
                {
                    var postManValue = context.Request.Headers["Postman-Token"];
                }

                if (isAjax && context.User.Identity.IsAuthenticated &&
                    !string.IsNullOrEmpty(CookieManager.Get(context, CookieManager.CookieKeys.JwtToken)) &&
                    !string.IsNullOrEmpty(context.Request.Headers["Authorization"]) &&
                    context.Request.Headers["Authorization"] != $"Bearer {CookieManager.Get(context, CookieManager.CookieKeys.JwtToken)}")
                {
                    throw new BadRequestException("Jwt token in Request not valid!");
                }

                await _next(context);
            }
            catch (AppException exception)
            {
                _logger.LogError(exception, exception.Message);
                httpStatusCode = exception.HttpStatusCode;
                apiStatusCode  = exception.ApiStatusCode;

                if (context.Request.IsAjax())
                {
                    if (_env.IsDevelopment())
                    {
                        var dic = new Dictionary <string, string>
                        {
                            ["Exception"]  = exception.Message,
                            ["StackTrace"] = exception.StackTrace,
                        };
                        if (exception.InnerException != null)
                        {
                            dic.Add("InnerException.Exception", exception.InnerException.Message);
                            dic.Add("InnerException.StackTrace", exception.InnerException.StackTrace);
                        }
                        if (exception.AdditionalData != null)
                        {
                            dic.Add("AdditionalData", JsonConvert.SerializeObject(exception.AdditionalData));
                        }

                        message = JsonConvert.SerializeObject(dic);
                    }
                    else
                    {
                        message = exception.Message;
                    }
                    await WriteToResponseAsync();
                }
                else
                {
                    if (httpStatusCode == HttpStatusCode.Unauthorized)
                    {
                        if (context.User.Identity.IsAuthenticated)
                        {
                            context.Response.Redirect("/Home");
                        }
                        else
                        {
                            context.Response.Redirect("/Login");
                        }
                    }
                }
            }
            catch (SecurityTokenExpiredException exception)
            {
                _logger.LogError(exception, exception.Message);
                if (context.Request.IsAjax())
                {
                    SetUnAuthorizeResponse(exception);
                    await WriteToResponseAsync();
                }
                else
                {
                    if (httpStatusCode == HttpStatusCode.Unauthorized)
                    {
                        if (context.User.Identity.IsAuthenticated)
                        {
                            context.Response.Redirect("/Home");
                        }
                        else
                        {
                            context.Response.Redirect("/Login");
                        }
                    }
                }
            }
            catch (UnauthorizedAccessException exception)
            {
                _logger.LogError(exception, exception.Message);
                if (context.Request.IsAjax())
                {
                    SetUnAuthorizeResponse(exception);
                    await WriteToResponseAsync();
                }
                else
                {
                    if (httpStatusCode == HttpStatusCode.Unauthorized)
                    {
                        if (context.User.Identity.IsAuthenticated)
                        {
                            context.Response.Redirect("/Home");
                        }
                        else
                        {
                            context.Response.Redirect("/Login");
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                _logger.LogError(exception, exception.Message);
                if (context.Request.IsAjax())
                {
                    if (_env.IsDevelopment())
                    {
                        var dic = new Dictionary <string, string>
                        {
                            ["Exception"]  = exception.Message,
                            ["StackTrace"] = exception.StackTrace,
                        };
                        message = JsonConvert.SerializeObject(dic);
                    }
                    await WriteToResponseAsync();
                }
                else
                {
                    if (httpStatusCode == HttpStatusCode.Unauthorized)
                    {
                        if (context.User.Identity.IsAuthenticated)
                        {
                            context.Response.Redirect("/Home");
                        }
                        else
                        {
                            context.Response.Redirect("/Login");
                        }
                    }
                }
            }

            async Task WriteToResponseAsync()
            {
                if (context.Response.HasStarted)
                {
                    throw new InvalidOperationException("The response has already started, the http status code middleware will not be executed.");
                }

                var result = new ApiResult(false, apiStatusCode, message);
                var json   = JsonConvert.SerializeObject(result);

                context.Response.StatusCode  = (int)httpStatusCode;
                context.Response.ContentType = "application/json";
                await context.Response.WriteAsync(json);
            }

            void SetUnAuthorizeResponse(Exception exception)
            {
                httpStatusCode = HttpStatusCode.Unauthorized;
                apiStatusCode  = ApiResultStatusCode.UnAuthorized;

                if (_env.IsDevelopment())
                {
                    var dic = new Dictionary <string, string>
                    {
                        ["Exception"]  = exception.Message,
                        ["StackTrace"] = exception.StackTrace
                    };
                    if (exception is SecurityTokenExpiredException tokenException)
                    {
                        dic.Add("Expires", tokenException.Expires.ToString());
                    }

                    message = JsonConvert.SerializeObject(dic);
                }
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="UserApiResult" /> class.
 /// </summary>
 /// <param name="data">data.</param>
 /// <param name="isSuccess">isSuccess.</param>
 /// <param name="statusCode">statusCode.</param>
 /// <param name="message">message.</param>
 public UserApiResult(User data = default(User), bool?isSuccess = default(bool?), ApiResultStatusCode statusCode = default(ApiResultStatusCode), string message = default(string))
 {
     this.Data       = data;
     this.IsSuccess  = isSuccess;
     this.StatusCode = statusCode;
     this.Message    = message;
 }
Example #15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ApiResult" /> class.
 /// </summary>
 /// <param name="isSuccess">isSuccess.</param>
 /// <param name="statusCode">statusCode.</param>
 /// <param name="message">message.</param>
 public ApiResult(bool?isSuccess = default(bool?), ApiResultStatusCode statusCode = default(ApiResultStatusCode), string message = default(string))
 {
     this.IsSuccess  = isSuccess;
     this.StatusCode = statusCode;
     this.Message    = message;
 }
 public AppException(ApiResultStatusCode statusCode, object additionalData)
     : this(statusCode, null, additionalData)
 {
 }
 public AppException(ApiResultStatusCode statusCode, string message, HttpStatusCode httpStatusCode, object additionalData)
     : this(statusCode, message, httpStatusCode, null, additionalData)
 {
 }
Example #18
0
 public ApiException(string message) : base(message)
 {
     StatusCode = ApiResultStatusCode.ServerError;
 }
 public AppException(ApiResultStatusCode statusCode, string message, Exception exception, object additionalData)
     : this(statusCode, message, HttpStatusCode.InternalServerError, exception, additionalData)
 {
 }
Example #20
0
 public ApiException(string message, ApiResultStatusCode statusCode) : base(message)
 {
     StatusCode = statusCode;
 }
Example #21
0
 public ApiStructResult(bool isSuccess, ApiResultStatusCode statusCode, TStruct data, string message = null)
     : base(isSuccess, statusCode, message)
 {
     Data = data;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="GPSTruckRecordSelectDtoApiResult" /> class.
 /// </summary>
 /// <param name="data">data.</param>
 /// <param name="isSuccess">isSuccess.</param>
 /// <param name="statusCode">statusCode.</param>
 /// <param name="message">message.</param>
 public GPSTruckRecordSelectDtoApiResult(GPSTruckRecordSelectDto data = default(GPSTruckRecordSelectDto), bool?isSuccess = default(bool?), ApiResultStatusCode statusCode = default(ApiResultStatusCode), string message = default(string))
 {
     this.Data       = data;
     this.IsSuccess  = isSuccess;
     this.StatusCode = statusCode;
     this.Message    = message;
 }
Example #23
0
        public async Task Invoke(HttpContext context)
        {
            string              message        = null;
            HttpStatusCode      httpStatusCode = HttpStatusCode.InternalServerError;
            ApiResultStatusCode apiStatusCode  = ApiResultStatusCode.ServerError;

            try
            {
                await _next(context);
            }
            catch (AppException exception)
            {
                _logger.LogError(exception, exception.Message);
                httpStatusCode = exception.HttpStatusCode;
                apiStatusCode  = exception.ApiStatusCode;

                if (_env.IsDevelopment())
                {
                    Dictionary <string, string> dic = new Dictionary <string, string>
                    {
                        ["Exception"]  = exception.Message,
                        ["StackTrace"] = exception.StackTrace,
                    };
                    if (exception.InnerException != null)
                    {
                        dic.Add("InnerException.Exception", exception.InnerException.Message);
                        dic.Add("InnerException.StackTrace", exception.InnerException.StackTrace);
                    }
                    if (exception.AdditionalData != null)
                    {
                        dic.Add("AdditionalData", JsonConvert.SerializeObject(exception.AdditionalData));
                    }

                    message = JsonConvert.SerializeObject(dic);
                }
                else
                {
                    message = exception.Message;
                }
                await WriteToResponseAsync();
            }
            catch (SecurityTokenExpiredException exception)
            {
                _logger.LogError(exception, exception.Message);
                SetUnAuthorizeResponse(exception);
                await WriteToResponseAsync();
            }
            catch (UnauthorizedAccessException exception)
            {
                _logger.LogError(exception, exception.Message);
                SetUnAuthorizeResponse(exception);
                await WriteToResponseAsync();
            }
            catch (Exception exception)
            {
                _logger.LogError(exception, exception.Message);

                if (_env.IsDevelopment())
                {
                    Dictionary <string, string> dic = new Dictionary <string, string>
                    {
                        ["Exception"]  = exception.Message,
                        ["StackTrace"] = exception.StackTrace,
                    };
                    message = JsonConvert.SerializeObject(dic);
                }
                await WriteToResponseAsync();
            }

            async Task WriteToResponseAsync()
            {
                if (context.Response.HasStarted)
                {
                    throw new InvalidOperationException("The response has already started, the http status code middleware will not be executed.");
                }

                ApiResult result = new ApiResult(false, apiStatusCode, message);
                string    json   = JsonConvert.SerializeObject(result);

                context.Response.StatusCode  = (int)httpStatusCode;
                context.Response.ContentType = "application/json";
                await context.Response.WriteAsync(json);
            }

            void SetUnAuthorizeResponse(Exception exception)
            {
                httpStatusCode = HttpStatusCode.Unauthorized;
                apiStatusCode  = ApiResultStatusCode.UnAuthorized;

                if (_env.IsDevelopment())
                {
                    Dictionary <string, string> dic = new Dictionary <string, string>
                    {
                        ["Exception"]  = exception.Message,
                        ["StackTrace"] = exception.StackTrace
                    };
                    if (exception is SecurityTokenExpiredException tokenException)
                    {
                        dic.Add("Expires", tokenException.Expires.ToString());
                    }

                    message = JsonConvert.SerializeObject(dic);
                }
            }
        }
Example #24
0
 public ApiResult(ApiResultStatusCode statusCode, List <string> message = null)
 {
     StatusCode = statusCode;
     Message    = message ?? statusCode.ToDisplays();
 }