Example #1
0
        public async Task InvokeAsync(HttpContext context)
        {
            if (context.Response != null)
            {
                var responseBody = context.Response.Body;

                using (MemoryStream memoryStream = new MemoryStream())
                {
                    context.Response.Body = memoryStream;

                    await _next.Invoke(context);

                    context.Response.Body = responseBody;

                    memoryStream.Seek(0, SeekOrigin.Begin);

                    var deserializeMemoryStream = JsonConvert.DeserializeObject(new StreamReader(memoryStream).ReadToEnd());

                    string result = JsonConvert.SerializeObject(ResponseMetadataModel.Create((HttpStatusCode)context.Response.StatusCode, deserializeMemoryStream, null));
                    await context.Response.WriteAsync(result, Encoding.UTF8);
                }
            }
        }
Example #2
0
        /// <summary>
        /// Handles the exception asynchronous.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="exception">The exception.</param>
        /// <returns></returns>
        private async Task HandleExceptionAsync(HttpContext context, Exception exception)
        {
            var result = new ResponseMetadataModel();

            context.Response.ContentType = "application/json";

            #region Exception

            if (exception is BadGatewayException)
            {
                result.Error      = (exception.Message ?? "Kusura bakma! Şu anda bir sorun yaşıyoruz. Lütfen daha sonra dene.");
                result.Result     = null;
                result.StatusCode = HttpStatusCode.BadGateway;
                result.Success    = false;

                context.Response.StatusCode = (int)HttpStatusCode.BadGateway;
            }
            else if (exception is BadRequestException)
            {
                result.Error      = (exception.Message ?? "Yaptığın istekte bir hata var. Lütfen bilgileri kontrol et.");
                result.Result     = null;
                result.StatusCode = HttpStatusCode.BadRequest;
                result.Success    = false;

                context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            }
            else if (exception is InternalServerErrorException)
            {
                result.Error      = (exception.Message ?? "Bir şeyler yanlış gitti. En kısa sürede düzelteceğiz.");
                result.Result     = null;
                result.StatusCode = HttpStatusCode.InternalServerError;
                result.Success    = false;

                context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            }
            else if (exception is NotFoundException)
            {
                result.Error      = (exception.Message ?? "Bulunamadı.");
                result.Result     = null;
                result.StatusCode = HttpStatusCode.NotFound;
                result.Success    = false;

                context.Response.StatusCode = (int)HttpStatusCode.NotFound;
            }
            else if (exception is RequestTimeoutException)
            {
                result.Error      = (exception.Message ?? "İstek zaman aşımına uğradı.");
                result.Result     = null;
                result.StatusCode = HttpStatusCode.RequestTimeout;
                result.Success    = false;

                context.Response.StatusCode = (int)HttpStatusCode.RequestTimeout;
            }
            else if (exception is ServiceUnavailableException)
            {
                result.Error      = (exception.Message ?? "Hizmet kullanılamıyor.");
                result.Result     = null;
                result.StatusCode = HttpStatusCode.ServiceUnavailable;
                result.Success    = false;

                context.Response.StatusCode = (int)HttpStatusCode.ServiceUnavailable;
            }
            else if (exception is ForbiddenException)
            {
                result.Error      = (exception.Message ?? "Giriş iznin yok.");
                result.Result     = null;
                result.StatusCode = HttpStatusCode.Forbidden;
                result.Success    = false;

                context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
            }
            else if (exception is UnauthorizedException)
            {
                result.Error      = (exception.Message ?? "Yetkili değilsin.");
                result.Result     = null;
                result.StatusCode = HttpStatusCode.Unauthorized;
                result.Success    = false;

                context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
            }
            else
            {
                result.Error      = (exception.Message ?? "İşlem sırasında bir hata oluştu.");
                result.Result     = null;
                result.StatusCode = (HttpStatusCode)context.Response.StatusCode;
                result.Success    = false;
            }

            #endregion

            Log.Error(exception, exception.Message);
            await context.Response.WriteAsync(JsonConvert.SerializeObject(result), Encoding.UTF8);
        }