using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using DomainResults.Mvc; using MaksIT.LetsEncryptServer.Services; using MaksIT.Models.LetsEncryptServer.Cache.Requests; namespace MaksIT.LetsEncryptServer.Controllers; [ApiController] [Route("api/cache")] public class CacheController : ControllerBase { private readonly ICacheRestService _cacheService; public CacheController( ICacheService cacheService ) { _cacheService = cacheService; } [HttpGet("accounts")] public async Task GetAccounts() { var result = await _cacheService.GetAccountsAsync(); return result.ToActionResult(); } [HttpPut("account/{accountId:guid}")] public async Task PutAccount(Guid accountId, [FromBody] PutAccountRequest requestData) { var result = await _cacheService.PutAccountAsync(accountId, requestData); return result.ToActionResult(); } [HttpPatch("account/{accountId:guid}")] public async Task PatchAccount(Guid accountId, [FromBody] PatchAccountRequest requestData) { var result = await _cacheService.PatchAccountAsync(accountId, requestData); return result.ToActionResult(); } #region Contacts [HttpGet("account/{accountId:guid}/contacts")] public async Task GetContacts(Guid accountId) { var result = await _cacheService.GetContactsAsync(accountId); return result.ToActionResult(); } [HttpPut("account/{accountId:guid}/contacts")] public async Task PutContacts(Guid accountId, [FromBody] PutContactsRequest requestData) { var result = await _cacheService.PutContactsAsync(accountId, requestData); return result.ToActionResult(); } [HttpPatch("account/{accountId:guid}/contacts")] public async Task PatchContacts(Guid accountId, [FromBody] PatchContactsRequest requestData) { var result = await _cacheService.PatchContactsAsync(accountId, requestData); return result.ToActionResult(); } [HttpDelete("account/{accountId:guid}/contacts/{index:int}")] public async Task DeleteContact(Guid accountId, int index) { var result = await _cacheService.DeleteContactAsync(accountId, index); return result.ToActionResult(); } #endregion #region Hostnames [HttpGet("account/{accountId:guid}/hostnames")] public async Task GetHostnames(Guid accountId) { var result = await _cacheService.GetHostnames(accountId); return result.ToActionResult(); } #endregion }