/
ArtSerg
/
IntegrationProject
Обзор
Документация
Войти
/
ArtSerg
/
IntegrationProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
Integration1/Controllers/InternalController.cs
54 строки
2 KB
artS3rg
Added idempotency header filter + swagger integration + middleware improvements
20 ноя 2025, 05:16
20 ноя 2025, 05:16
e27f9a4
Код
Авторство
О чём код?
using Integration1.Data; using Microsoft.EntityFrameworkCore; using Microsoft.AspNetCore.Mvc; namespace Integration1.Controllers { [ApiController] [Route("internal")] public class InternalController : ControllerBase { private readonly AppDbContext _db; private readonly IConfiguration _config; public InternalController(AppDbContext db, IConfiguration config) { _db = db; _config = config; } private bool ValidateInternalKey() { if (!Request.Headers.TryGetValue("X-Internal-ApiKey", out var key)) return false; var expected = _config["Internal:ApiKey"]; return !string.IsNullOrEmpty(expected) && key == expected; } [HttpGet("metrics")] public async Task<IActionResult> GetMetrics() { if (!ValidateInternalKey()) return Unauthorized(); var totalUsers = await _db.Users.CountAsync(); var totalTasks = await _db.Tasks.CountAsync(); var completedTasks = await _db.Tasks.CountAsync(t => t.IsCompleted); var metrics = new { totalUsers, totalTasks, completedTasks, timestamp = DateTime.UtcNow }; return Ok(metrics); } [HttpGet("users/{userId}/tasks")] public async Task<IActionResult> GetUserTasksInternal(string userId) { if (!ValidateInternalKey()) return Unauthorized(); var tasks = await _db.Tasks.Where(t => t.UserId == userId).ToListAsync(); return Ok(tasks); } } }