From 6a46975cfda1b1f0ac68d4b1f61bdfc51cb04522 Mon Sep 17 00:00:00 2001 From: ivanszabo Date: Wed, 15 Jan 2025 17:26:09 +0100 Subject: [PATCH] =?UTF-8?q?Na=20most=20m=C5=B1k=C3=B6dig=20SWAGGER=20?= =?UTF-8?q?=C3=A9s=205000=20porton=20publishban=20is=20!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WorkFlowCheck.API/ApiKeyMiddleware.cs | 6 +++- .../Controllers/UserController.cs | 31 ++++++++++++++++--- src/WorkFlowCheck.API/Program.cs | 23 ++++++-------- .../Properties/launchSettings.json | 4 +-- .../WorkFlowCheck.API.csproj | 1 + src/WorkFlowCheck.API/appsettings.json | 6 ++-- src/WorkFlowCheck.BL/DTO/ApiResponseDTO.cs | 12 ++++--- 7 files changed, 55 insertions(+), 28 deletions(-) diff --git a/src/WorkFlowCheck.API/ApiKeyMiddleware.cs b/src/WorkFlowCheck.API/ApiKeyMiddleware.cs index d20346b..59acd94 100644 --- a/src/WorkFlowCheck.API/ApiKeyMiddleware.cs +++ b/src/WorkFlowCheck.API/ApiKeyMiddleware.cs @@ -4,16 +4,19 @@ { private readonly RequestDelegate _next; private const string ApiKeyHeaderName = "X-Api-Key"; + private readonly ILogger _logger; - public ApiKeyMiddleware(RequestDelegate next) + public ApiKeyMiddleware(RequestDelegate next, ILogger logger) { _next = next; + _logger = logger; } public async Task InvokeAsync(HttpContext context) { if (!context.Request.Headers.TryGetValue(ApiKeyHeaderName, out var extractedApiKey)) { + _logger.LogWarning("API Key is missing."); context.Response.StatusCode = 401; // Unauthorized context.Response.ContentType = "text/html; charset=utf-8"; await context.Response.WriteAsync("API Key hiányzik."); @@ -25,6 +28,7 @@ if (!apiKey.Equals(extractedApiKey)) { + _logger.LogWarning("Invalid API Key."); context.Response.StatusCode = 403; // Forbidden context.Response.ContentType = "text/html; charset=utf-8"; await context.Response.WriteAsync("Helytelen API Key."); diff --git a/src/WorkFlowCheck.API/Controllers/UserController.cs b/src/WorkFlowCheck.API/Controllers/UserController.cs index 8930a29..bffb1a5 100644 --- a/src/WorkFlowCheck.API/Controllers/UserController.cs +++ b/src/WorkFlowCheck.API/Controllers/UserController.cs @@ -10,20 +10,41 @@ namespace WorkFlowCheck.API.Controllers public class UserController : ControllerBase { private IUserService _userService; + public UserController(IUserService userService) { _userService = userService; } - [HttpGet] - public async Task> Get() + + [HttpGet("{id}")] + public async Task> Get(int id) { - var userDTO = await _userService.GetUser(1); var retVal = new ApiResponseDTO() { IsSuccess = true, - Data = userDTO }; - + var userDTO = await _userService.GetUser(id); + + if (userDTO != null) + { + if (userDTO.Id == 0) + { + retVal.IsSuccess = false; + retVal.Errors.Add("No match!"); + retVal.Data = userDTO; + } + else + { + retVal.IsSuccess = true; + retVal.Data = userDTO; + } + } + else + { + retVal.IsSuccess = false; + retVal.Errors.Add("No data!"); + } + return retVal; } } diff --git a/src/WorkFlowCheck.API/Program.cs b/src/WorkFlowCheck.API/Program.cs index 223552d..a9439af 100644 --- a/src/WorkFlowCheck.API/Program.cs +++ b/src/WorkFlowCheck.API/Program.cs @@ -11,18 +11,13 @@ using WorkFlowCheck.BL.Infra; var builder = WebApplication.CreateBuilder(args); + + Log.Logger = new LoggerConfiguration() - .WriteTo.Console() // Logok írása a konzolra - .WriteTo.File("logs/WorkFlowCheck.log", rollingInterval: RollingInterval.Day) // Logok fájlba + .ReadFrom.Configuration(builder.Configuration) .CreateLogger(); -//builder.WebHost.ConfigureKestrel(options => -//{ -// options.ListenAnyIP(5069, listenOptions => -// { -// listenOptions.UseHttps(Path.Combine(AppContext.BaseDirectory, "Certs", "SwaggerCert.pfx"), "Noispot135!Xy()zz654321"); -// }); -//}); + builder.Services.AddAutoMapper(typeof(MapperProfile)); var connectionString = builder.Configuration.GetConnectionString("DefaultConnection"); @@ -78,7 +73,10 @@ builder.Services.AddControllers() options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; }); + + var app = builder.Build(); + // Swagger middleware if (app.Environment.IsDevelopment()) { @@ -91,11 +89,10 @@ if (app.Environment.IsDevelopment()) // Routing és endpointok app.UseHttpsRedirection(); -app.UseAuthorization(); - -app.MapControllers(); - +app.UseRouting(); app.UseMiddleware(); +app.MapControllers(); +app.UseAuthorization(); app.Run(); diff --git a/src/WorkFlowCheck.API/Properties/launchSettings.json b/src/WorkFlowCheck.API/Properties/launchSettings.json index e0cc546..f296a32 100644 --- a/src/WorkFlowCheck.API/Properties/launchSettings.json +++ b/src/WorkFlowCheck.API/Properties/launchSettings.json @@ -3,7 +3,7 @@ "http": { "commandName": "Project", "launchBrowser": true, - "launchUrl": "todos", + "launchUrl": "swagger", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, @@ -13,7 +13,7 @@ "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, - "launchUrl": "todos", + "launchUrl": "swagger", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/src/WorkFlowCheck.API/WorkFlowCheck.API.csproj b/src/WorkFlowCheck.API/WorkFlowCheck.API.csproj index 03f15fa..317f18f 100644 --- a/src/WorkFlowCheck.API/WorkFlowCheck.API.csproj +++ b/src/WorkFlowCheck.API/WorkFlowCheck.API.csproj @@ -9,6 +9,7 @@ enable false false + true diff --git a/src/WorkFlowCheck.API/appsettings.json b/src/WorkFlowCheck.API/appsettings.json index d3e074e..db481fd 100644 --- a/src/WorkFlowCheck.API/appsettings.json +++ b/src/WorkFlowCheck.API/appsettings.json @@ -6,11 +6,11 @@ "Logging": { "LogLevel": { "Default": "Information", - "Microsoft.AspNetCore": "Verbose" + "Microsoft.AspNetCore": "Information" } }, "Serilog": { - "MinimumLevel": "Verbose", + "MinimumLevel": "Information", "WriteTo": [ { "Name": "Console" @@ -18,7 +18,7 @@ { "Name": "File", "Args": { - "path": "logs/log-.txt", + "path": "logs/log-.log", "rollingInterval": "Day" } } diff --git a/src/WorkFlowCheck.BL/DTO/ApiResponseDTO.cs b/src/WorkFlowCheck.BL/DTO/ApiResponseDTO.cs index d5d4176..3545a79 100644 --- a/src/WorkFlowCheck.BL/DTO/ApiResponseDTO.cs +++ b/src/WorkFlowCheck.BL/DTO/ApiResponseDTO.cs @@ -4,8 +4,12 @@ namespace WorkFlowCheck.BL.DTO { public class ApiResponseBaseDTO { + public ApiResponseBaseDTO() + { + Errors = new List(); + } public bool IsSuccess { get; set; } - public IEnumerable Errors { get; set; } + public List Errors { get; set; } public bool HandleError { get; set; } public string Error { @@ -16,17 +20,17 @@ namespace WorkFlowCheck.BL.DTO } } } - + public class ApiResponseDTO : ApiResponseBaseDTO { public object Data { get; set; } } - + public interface IApiResponseDTO { } - + public class ApiResponseDTO : ApiResponseBaseDTO, IApiResponseDTO { public T Data { get; set; }