using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Moonlight.Api.Configuration; using Moonlight.Api.Mappers; using Moonlight.Api.Services; using Moonlight.Shared.Http.Events; using Moonlight.Shared.Http.Requests.Admin.ContainerHelper; using Moonlight.Shared.Http.Responses.Admin; namespace Moonlight.Api.Http.Controllers.Admin; [ApiController] [Route("api/admin/ch")] public class ContainerHelperController : Controller { private readonly ContainerHelperService ContainerHelperService; private readonly IOptions Options; public ContainerHelperController(ContainerHelperService containerHelperService, IOptions options) { ContainerHelperService = containerHelperService; Options = options; } [HttpGet("status")] public async Task> GetStatusAsync() { if (!Options.Value.IsEnabled) return new ContainerHelperStatusDto(false, false); var status = await ContainerHelperService.CheckConnectionAsync(); return new ContainerHelperStatusDto(true, status); } [HttpPost("rebuild")] public Task RebuildAsync([FromBody] RequestRebuildDto request) { var result = ContainerHelperService.RebuildAsync(request.NoBuildCache); var mappedResult = result.Select(ContainerHelperMapper.ToDto); return Task.FromResult( TypedResults.ServerSentEvents(mappedResult) ); } [HttpPost("version")] public async Task SetVersionAsync([FromBody] SetVersionDto request) { await ContainerHelperService.SetVersionAsync(request.Version); return NoContent(); } }