Skip to content
This repository was archived by the owner on Apr 17, 2025. It is now read-only.

Commit 19df62b

Browse files
committed
Aggiunta nuova implementazione Custom Response
1 parent e0c9388 commit 19df62b

File tree

5 files changed

+107
-0
lines changed

5 files changed

+107
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
namespace NET6CustomLibrary.CustomResponse;
2+
3+
public class DefaultResponse
4+
{
5+
public HttpStatusCode StatusCode { get; }
6+
public bool Success { get; set; }
7+
public object Message { get; set; }
8+
9+
public DefaultResponse(bool success)
10+
{
11+
StatusCode = HttpStatusCode.OK;
12+
Success = success;
13+
}
14+
15+
public DefaultResponse(HttpStatusCode statusCode, bool success)
16+
{
17+
StatusCode = statusCode;
18+
Success = success;
19+
}
20+
21+
public DefaultResponse(bool success, object message)
22+
{
23+
StatusCode = HttpStatusCode.OK;
24+
Success = success;
25+
Message = message;
26+
}
27+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
namespace NET6CustomLibrary.CustomResponse;
2+
3+
public class ExceptionResponse : Exception
4+
{
5+
public HttpStatusCode StatusCode { get; }
6+
public int TypeCode { get; }
7+
public string ErrorCode { get; }
8+
public string ErrorDetail { get; }
9+
public string ErrorMessage { get; }
10+
public object ResponseBody { get; }
11+
12+
public ExceptionResponse(HttpStatusCode statusCode, int typeCode, string errorCode, string errorMessage)
13+
{
14+
StatusCode = statusCode;
15+
TypeCode = typeCode;
16+
ErrorCode = errorCode;
17+
ErrorDetail = $"https://httpstatuses.io/{(int)statusCode}";
18+
ErrorMessage = errorMessage;
19+
}
20+
21+
public ExceptionResponse(HttpStatusCode statusCode, int typeCode, string errorCode, string errorMessage, object responseBody)
22+
{
23+
StatusCode = statusCode;
24+
TypeCode = typeCode;
25+
ErrorCode = errorCode;
26+
ErrorDetail = $"https://httpstatuses.io/{(int)statusCode}";
27+
ErrorMessage = errorMessage;
28+
ResponseBody = responseBody;
29+
}
30+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace NET6CustomLibrary.ErrorController;
2+
3+
public class Error
4+
{
5+
public int TypeCode { get; set; }
6+
public string Code { get; set; }
7+
public string ErrorDetail { get; set; }
8+
public string Message { get; set; }
9+
public object Details { get; set; }
10+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace NET6CustomLibrary.ErrorController;
2+
3+
public class ErrorResponse
4+
{
5+
public Error Error { get; set; }
6+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
using Microsoft.AspNetCore.Mvc;
2+
using Microsoft.AspNetCore.Mvc.Filters;
3+
using NET6CustomLibrary.CustomResponse;
4+
5+
namespace NET6CustomLibrary.ErrorController.Filters;
6+
7+
public class ControllerApiExceptionFilter : IExceptionFilter
8+
{
9+
public void OnException(ExceptionContext context)
10+
{
11+
if (context.Exception.GetType() != typeof(ExceptionResponse))
12+
return;
13+
14+
var ex = (ExceptionResponse)context.Exception;
15+
16+
ErrorResponse errore = new()
17+
{
18+
Error = new Error
19+
{
20+
Code = ex.ErrorCode,
21+
ErrorDetail = ex.ErrorDetail,
22+
Message = ex.ErrorMessage,
23+
Details = ex.ResponseBody
24+
}
25+
};
26+
ObjectResult result = new(errore)
27+
{
28+
StatusCode = (int)ex.StatusCode
29+
};
30+
31+
context.Result = result;
32+
context.ExceptionHandled = true;
33+
}
34+
}

0 commit comments

Comments
 (0)