* Introduce media API - controllers, services, tests, Swagger docs * Add path to media API response + add "by path" endpoint * Review comments * Implement filtering and sorting * Add explicit media access configuration * Cleanup * Adding default case as in the MediaApiControllerBase * Update src/Umbraco.Cms.Api.Delivery/Services/ApiMediaQueryService.cs Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com> * Swap sort order calculation to align with Content API * Add CreateDate and UpdateDate to media responses * Mirror Content Delivery API behavior for empty children selector --------- Co-authored-by: Elitsa <elm@umbraco.dk> Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using Asp.Versioning;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Umbraco.Cms.Core.Models.DeliveryApi;
|
|
using Umbraco.Cms.Core.Models.PublishedContent;
|
|
using Umbraco.Cms.Core.PublishedCache;
|
|
using Umbraco.Cms.Infrastructure.DeliveryApi;
|
|
|
|
namespace Umbraco.Cms.Api.Delivery.Controllers;
|
|
|
|
[ApiVersion("1.0")]
|
|
public class ByIdMediaApiController : MediaApiControllerBase
|
|
{
|
|
public ByIdMediaApiController(IPublishedSnapshotAccessor publishedSnapshotAccessor, IApiMediaWithCropsResponseBuilder apiMediaWithCropsResponseBuilder)
|
|
: base(publishedSnapshotAccessor, apiMediaWithCropsResponseBuilder)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets a media item by id.
|
|
/// </summary>
|
|
/// <param name="id">The unique identifier of the media item.</param>
|
|
/// <returns>The media item or not found result.</returns>
|
|
[HttpGet("item/{id:guid}")]
|
|
[MapToApiVersion("1.0")]
|
|
[ProducesResponseType(typeof(ApiMediaWithCropsResponse), StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
|
public async Task<IActionResult> ById(Guid id)
|
|
{
|
|
IPublishedContent? media = PublishedMediaCache.GetById(id);
|
|
|
|
if (media is null)
|
|
{
|
|
return await Task.FromResult(NotFound());
|
|
}
|
|
|
|
return Ok(BuildApiMediaWithCrops(media));
|
|
}
|
|
}
|