using MoonCore.Attributes; using MoonCore.Helpers; using MoonCore.Models; using MoonlightServers.Shared.Http.Requests.Client.Servers.Variables; using MoonlightServers.Shared.Http.Responses.Client.Servers.Variables; using MoonlightServers.Shared.Http.Responses.Users.Servers; namespace MoonlightServers.Frontend.Services; [Scoped] public class ServerService { private readonly HttpApiClient HttpApiClient; public ServerService(HttpApiClient httpApiClient) { HttpApiClient = httpApiClient; } public async Task> GetServers(int page, int perPage) { return await HttpApiClient.GetJson>( $"api/client/servers?page={page}&pageSize={perPage}" ); } public async Task GetServer(int serverId) { return await HttpApiClient.GetJson( $"api/client/servers/{serverId}" ); } public async Task GetStatus(int serverId) { return await HttpApiClient.GetJson( $"api/client/servers/{serverId}/status" ); } public async Task GetLogs(int serverId) { return await HttpApiClient.GetJson( $"api/client/servers/{serverId}/logs" ); } public async Task GetWebSocket(int serverId) { return await HttpApiClient.GetJson( $"api/client/servers/{serverId}/ws" ); } public async Task Install(int serverId) { await HttpApiClient.Post( $"api/client/servers/{serverId}/install" ); } #region Power actions public async Task Start(int serverId) { await HttpApiClient.Post( $"api/client/servers/{serverId}/start" ); } public async Task Stop(int serverId) { await HttpApiClient.Post( $"api/client/servers/{serverId}/stop" ); } public async Task Kill(int serverId) { await HttpApiClient.Post( $"api/client/servers/{serverId}/kill" ); } #endregion #region Variables public async Task GetVariables(int serverId) { return await HttpApiClient.GetJson( $"api/client/servers/{serverId}/variables" ); } public async Task UpdateVariables(int serverId, UpdateServerVariableRangeRequest request) { await HttpApiClient.Patch( $"api/client/servers/{serverId}/variables", request ); } public async Task UpdateVariable(int serverId, UpdateServerVariableRequest request) { await HttpApiClient.Put( $"api/client/servers/{serverId}/variables", request ); } #endregion }