using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Moonlight.Api.Services; using Moonlight.Shared; using Moonlight.Shared.Http.Responses.Admin; namespace Moonlight.Api.Http.Controllers.Admin; [ApiController] [Route("api/admin/system")] public class SystemController : Controller { private readonly ApplicationService ApplicationService; public SystemController(ApplicationService applicationService) { ApplicationService = applicationService; } [HttpGet("info")] [Authorize(Policy = Permissions.System.Info)] public async Task> GetInfoAsync() { var cpuUsage = await ApplicationService.GetCpuUsageAsync(); var memoryUsage = await ApplicationService.GetMemoryUsageAsync(); return new SystemInfoDto( cpuUsage, memoryUsage, ApplicationService.OperatingSystem, DateTimeOffset.UtcNow - ApplicationService.StartedAt, ApplicationService.VersionName, ApplicationService.IsUpToDate ); } }