/
rumina-v
/
logging_filters
Обзор
Документация
Войти
/
rumina-v
/
logging_filters
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Program.cs
83 строки
2 KB
Viktoria Rumina
Add solution files
04 июн 2026, 12:13
04 июн 2026, 12:13
01b9077
Код
Авторство
О чём код?
using Serilog; var builder = WebApplication.CreateBuilder(args); builder.Host.UseSerilog((context, configuration) => configuration.ReadFrom.Configuration(context.Configuration)); builder.Services.AddSingleton<SensitiveDataMasker>(); builder.Services.AddTransient<HttpTrafficLoggingMiddleware>(); var app = builder.Build(); app.UseMiddleware<HttpTrafficLoggingMiddleware>(); app.MapGet("/", () => Results.Ok(new { message = "Logging Filters API is running", endpoints = new[] { "POST /api/orders", "POST /api/auth/session", "GET /api/support/tickets/{ticketId}?accessToken=..." }, monitoring = "http://localhost:5341" })); app.MapPost("/api/orders", ( CreateOrderRequest request, ILogger<Program> logger, SensitiveDataMasker masker) => { var orderId = Guid.NewGuid(); logger.LogInformation( "Order {OrderId} created for customer {CustomerEmail}. Payment card: {CardNumber}", orderId, masker.MaskEmail(request.CustomerEmail), masker.MaskValue(request.CardNumber)); return Results.Created($"/api/orders/{orderId}", new { orderId, request.Product, status = "created" }); }); app.MapPost("/api/auth/session", ( LoginRequest request, ILogger<Program> logger, SensitiveDataMasker masker) => { logger.LogInformation( "Authentication requested for {Email}. Password received: {Password}", masker.MaskEmail(request.Email), masker.MaskValue(request.Password)); return Results.Ok(new { accessToken = "demo-token-for-client", tokenType = "Bearer" }); }); app.MapGet("/api/support/tickets/{ticketId:int}", ( int ticketId, string? accessToken, ILogger<Program> logger, SensitiveDataMasker masker) => { logger.LogInformation( "Support ticket {TicketId} requested with access token {AccessToken}", ticketId, masker.MaskValue(accessToken)); return Results.Ok(new { ticketId, subject = "Delivery status", state = "in-progress" }); }); app.Run();