using System; using Application; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace Api.Controllers { [Route("api/links")] [ApiController] public class LinksController : ControllerBase { private readonly LinkService _linkService; public LinksController(LinkService linkService) { _linkService = linkService; } /// /// Récupère la liste liste des derniers liens publiés. /// /// [HttpGet] public LinkDTO[] Index() { return _linkService.GetAllLinks(); } /// /// Récupère les détails d'un lien. /// /// /// [HttpGet("{id:guid}")] [ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status200OK)] public LinkDTO Show(Guid id) { return _linkService.GetLinkById(id); } /// /// Permet de publier un nouveau lien sur la plateforme. /// /// /// [HttpPost] [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status201Created)] public IActionResult Create(PublishLinkCommand cmd) { var linkId = _linkService.PublishLink(cmd); return CreatedAtAction(nameof(Show), new { id = linkId }, null); } } }