namespace decePubClient.Models.Mastodon;
///
/// A post as PrivaPub's Mastodon API sends it (snake_case JSON, MastodonJsonContext). PrivaPub-only details are in
/// Privapub; ids are opaque strings.
///
public class Status
{
public string Id { get; set; }
public string Uri { get; set; }
public string Url { get; set; }
public Account Account { get; set; }
public string InReplyToId { get; set; }
public string InReplyToAccountId { get; set; }
public Status Reblog { get; set; }
public string Content { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime? EditedAt { get; set; }
public List Emojis { get; set; } = [];
public int RepliesCount { get; set; }
public int ReblogsCount { get; set; }
public int FavouritesCount { get; set; }
public bool Reblogged { get; set; }
public bool Favourited { get; set; }
public bool Muted { get; set; }
public bool Bookmarked { get; set; }
public bool Pinned { get; set; }
public bool Sensitive { get; set; }
public string SpoilerText { get; set; }
/// public, unlisted, private (followers and circles) or direct.
public string Visibility { get; set; }
public List MediaAttachments { get; set; } = [];
public List Mentions { get; set; } = [];
public List Tags { get; set; } = [];
public PreviewCard Card { get; set; }
public Poll Poll { get; set; }
public StatusApplication Application { get; set; }
public string Language { get; set; }
/// The plain text source, only on the author's own deleted or edited post.
public string Text { get; set; }
public PrivaPubStatus Privapub { get; set; }
public Quote Quote { get; set; }
public int QuotesCount { get; set; }
}
public class StatusMention
{
public string Id { get; set; }
public string Username { get; set; }
public string Url { get; set; }
public string Acct { get; set; }
}
public class StatusTag
{
public string Name { get; set; }
public string Url { get; set; }
}
public class StatusApplication
{
public string Name { get; set; }
public string Website { get; set; }
}
public class Quote
{
public string State { get; set; }
public Status QuotedStatus { get; set; }
public string QuotedStatusId { get; set; }
}
public class StatusContext
{
public List Ancestors { get; set; } = [];
public List Descendants { get; set; } = [];
}
public class Poll
{
public string Id { get; set; }
public DateTime? ExpiresAt { get; set; }
public bool Expired { get; set; }
public bool Multiple { get; set; }
public int VotesCount { get; set; }
public int? VotersCount { get; set; }
public bool? Voted { get; set; }
public List Options { get; set; } = [];
}
public class PollOption
{
public string Title { get; set; }
public int? VotesCount { get; set; }
}
public class PreviewCard
{
public string Url { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Type { get; set; }
public string ProviderName { get; set; }
public string Image { get; set; }
public string ImageDescription { get; set; }
public int Width { get; set; }
public int Height { get; set; }
public string Blurhash { get; set; }
}