46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
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<ActionResult<VersionDto[]>> GetAsync()
|
|
{
|
|
var versions = await VersionService.GetVersionsAsync();
|
|
return VersionMapper.ToDtos(versions).ToArray();
|
|
}
|
|
|
|
[HttpGet("instance")]
|
|
public async Task<ActionResult<VersionDto>> GetInstanceAsync()
|
|
{
|
|
var version = await VersionService.GetInstanceVersionAsync();
|
|
return VersionMapper.ToDto(version);
|
|
}
|
|
|
|
[HttpGet("latest")]
|
|
public async Task<ActionResult<VersionDto>> GetLatestAsync()
|
|
{
|
|
var version = await VersionService.GetLatestVersionAsync();
|
|
|
|
if(version == null)
|
|
return Problem("Unable to retrieve latest version", statusCode: 404);
|
|
|
|
return VersionMapper.ToDto(version);
|
|
}
|
|
} |