Iceshrimp.NET/Iceshrimp.Backend/Controllers/Mastodon/Schemas/Entities/AttachmentEntity.cs

53 lines
No EOL
1.7 KiB
C#

using J = System.Text.Json.Serialization.JsonPropertyNameAttribute;
using JI = System.Text.Json.Serialization.JsonIgnoreAttribute;
namespace Iceshrimp.Backend.Controllers.Mastodon.Schemas.Entities;
public class AttachmentEntity
{
[JI] public required bool Sensitive;
[JI] public required AttachmentType Type;
[J("id")] public required string Id { get; set; }
[J("url")] public required string Url { get; set; }
[J("remote_url")] public string? RemoteUrl { get; set; }
[J("preview_url")] public string? PreviewUrl { get; set; }
[J("text_url")] public string? TextUrl { get; set; }
[J("meta")] public AttachmentMetadata? Metadata { get; set; }
[J("description")] public string? Description { get; set; }
[J("blurhash")] public string? Blurhash { get; set; }
[J("type")]
public string TypeString => Type switch
{
AttachmentType.Unknown => "unknown",
AttachmentType.Image => "image",
AttachmentType.Gif => "image",
AttachmentType.Video => "video",
AttachmentType.Audio => "audio",
_ => throw new ArgumentOutOfRangeException()
};
public static AttachmentType GetType(string mime)
{
if (mime == "image/gif") return AttachmentType.Gif;
if (mime.StartsWith("image/")) return AttachmentType.Image;
if (mime.StartsWith("video/")) return AttachmentType.Video;
if (mime.StartsWith("audio/")) return AttachmentType.Audio;
return AttachmentType.Unknown;
}
}
public enum AttachmentType
{
Unknown,
Image,
Gif,
Video,
Audio
}
public class AttachmentMetadata
{
//TODO
}