Iceshrimp.NET/Iceshrimp.Backend/Controllers/Mastodon/Renderers/AttachmentRenderer.cs
2025-01-09 12:36:34 +01:00

25 lines
916 B
C#

using Iceshrimp.Backend.Controllers.Mastodon.Schemas.Entities;
using Iceshrimp.Backend.Core.Database.Tables;
using Iceshrimp.Backend.Core.Extensions;
using Iceshrimp.Backend.Core.Services;
namespace Iceshrimp.Backend.Controllers.Mastodon.Renderers;
public class AttachmentRenderer(MediaProxyService mediaProxy) : ISingletonService
{
public AttachmentEntity Render(DriveFile file, bool proxy = true) => new()
{
Id = file.Id,
Type = AttachmentEntity.GetType(file.Type),
Url = proxy ? mediaProxy.GetProxyUrl(file) : file.RawAccessUrl,
Blurhash = file.Blurhash,
PreviewUrl = proxy ? mediaProxy.GetThumbnailProxyUrl(file) : file.RawThumbnailAccessUrl,
Description = file.Comment,
RemoteUrl = file.Uri,
Sensitive = file.IsSensitive,
//
Metadata = file.Properties is { Height: { } height, Width: { } width }
? new AttachmentMetadata(width, height)
: null
};
}