using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; namespace AsbCloudWebApi.Controllers { /// /// Мониторинг запросов, ошибок, пользователей /// [Route("api/[controller]")] [ApiController] [Authorize] public class RequestTrackerController : ControllerBase { private readonly IRequerstTrackerService service; public RequestTrackerController(IRequerstTrackerService service) { this.service = service; } /// /// Получить последние `take` запросов к серверу /// /// от 1 до 1000 /// [HttpGet] [Permission] public IActionResult GetAll(int take = 512) { var result = service.GetAll(take); return Ok(result); } /// /// Получить последние `take` быстрых запросов к серверу /// /// от 1 до 1000 /// [HttpGet("fast")] [Permission] public IActionResult GetFast(int take = 512) { var result = service.GetFast(take); return Ok(result); } /// /// Получить последние `take` медленных запросов к серверу /// /// от 1 до 1000 /// [HttpGet("slow")] [Permission] public IActionResult GetSlow(int take = 512) { var result = service.GetSlow(take); return Ok(result); } /// /// Получить последние `take` ошибок при выполнении запросов /// /// от 1 до 1000 /// [HttpGet("error")] [Permission] public IActionResult GetError(int take = 512) { var result = service.GetError(take); return Ok(result); } /// /// Получить последних пользователей обращавшихся к серверу. Уникальность пользователя проверяется по логину и Ip. /// /// от 1 до 1000 /// [HttpGet("users")] [Permission] [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] public IActionResult GetUsersStat(int take = 512) { var result = service.GetUsersStat(take); return Ok(result); } } }