Add project files.
This commit is contained in:
		
							
								
								
									
										30
									
								
								Core.Cerberos.BFF.Api/Controllers/BaseController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								Core.Cerberos.BFF.Api/Controllers/BaseController.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using Newtonsoft.Json; | ||||
| using Refit; | ||||
|  | ||||
| namespace Core.Cerberos.BFF.Api.Controllers | ||||
| { | ||||
|     [Route("api/[controller]")] | ||||
|     [ApiController] | ||||
|     public class BaseController(ILogger<BaseController> logger) : ControllerBase | ||||
|     { | ||||
|         private readonly ILogger<BaseController> _logger = logger; | ||||
|  | ||||
|         protected Guid TrackingId => (Guid)(HttpContext.Items["TrackingId"] ?? Guid.NewGuid()); | ||||
|  | ||||
|         protected async Task<IActionResult> Handle<T>(Func<Task<ApiResponse<T>>> apiCall) where T : class | ||||
|         { | ||||
|             var response = await apiCall().ConfigureAwait(false); | ||||
|  | ||||
|             _logger.LogInformation($"{TrackingId} - {response.RequestMessage?.Method} {response.RequestMessage?.RequestUri} - Status: {response.StatusCode}"); | ||||
|  | ||||
|             return FromAPIResponse(response); | ||||
|         } | ||||
|  | ||||
|         private IActionResult FromAPIResponse<T>(ApiResponse<T> response) where T : class | ||||
|         { | ||||
|             var errorContent = JsonConvert.DeserializeObject<string>(response.Error?.Content ?? string.Empty) ?? string.Empty; | ||||
|             return StatusCode((int)response.StatusCode, (response.Content is not null) ? response.Content : errorContent); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Sergio Matias Urquin
					Sergio Matias Urquin