using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Moonlight.Api.Mappers; using Moonlight.Api.Services; using Moonlight.Shared; using Moonlight.Shared.Http.Responses.Admin; namespace Moonlight.Api.Http.Controllers.Admin; [ApiController] [Route("api/admin/versions")] [Authorize(Policy = Permissions.System.Versions)] public class VersionsController : Controller { private readonly VersionService VersionService; public VersionsController(VersionService versionService) { VersionService = versionService; } [HttpGet] public async Task> GetAsync() { var versions = await VersionService.GetVersionsAsync(); return VersionMapper.ToDtos(versions).ToArray(); } [HttpGet("instance")] public async Task> GetInstanceAsync() { var version = await VersionService.GetInstanceVersionAsync(); return VersionMapper.ToDto(version); } [HttpGet("latest")] public async Task> GetLatestAsync() { var version = await VersionService.GetLatestVersionAsync(); if(version == null) return Problem("Unable to retrieve latest version", statusCode: 404); return VersionMapper.ToDto(version); } }