From 77f2a27b23d47bab39834d81e71812974bc8215f Mon Sep 17 00:00:00 2001 From: tsmethurst Date: Sat, 13 Mar 2021 23:59:15 +0100 Subject: [PATCH] more work on types --- pkg/mastotypes/model/card.go | 39 +++++++++++++++++++++++-- pkg/mastotypes/model/emoji.go | 1 + pkg/mastotypes/model/scheduledstatus.go | 39 +++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 pkg/mastotypes/model/scheduledstatus.go diff --git a/pkg/mastotypes/model/card.go b/pkg/mastotypes/model/card.go index 97de795d..d1147e04 100644 --- a/pkg/mastotypes/model/card.go +++ b/pkg/mastotypes/model/card.go @@ -20,7 +20,42 @@ package mastotypes // Card represents a rich preview card that is generated using OpenGraph tags from a URL. See here: https://docs.joinmastodon.org/entities/card/ type Card struct { - URL string `json:"url"` - Title string `json:"title"` + // REQUIRED + + // Location of linked resource. + URL string `json:"url"` + // Title of linked resource. + Title string `json:"title"` + // Description of preview. Description string `json:"description"` + // The type of the preview card. + // String (Enumerable, oneOf) + // link = Link OEmbed + // photo = Photo OEmbed + // video = Video OEmbed + // rich = iframe OEmbed. Not currently accepted, so won't show up in practice. + Type string `json:"type"` + + // OPTIONAL + + // The author of the original resource. + AuthorName string `json:"author_name"` + // A link to the author of the original resource. + AuthorURL string `json:"author_url"` + // The provider of the original resource. + ProviderName string `json:"provider_name"` + // A link to the provider of the original resource. + ProviderURL string `json:"provider_url"` + // HTML to be used for generating the preview card. + HTML string `json:"html"` + // Width of preview, in pixels. + Width int `json:"width"` + // Height of preview, in pixels. + Height int `json:"height"` + // Preview thumbnail. + Image string `json:"image"` + // Used for photo embeds, instead of custom html. + EmbedURL string `json:"embed_url"` + // A hash computed by the BlurHash algorithm, for generating colorful preview thumbnails when media has not been downloaded yet. + Blurhash string `json:"blurhash"` } diff --git a/pkg/mastotypes/model/emoji.go b/pkg/mastotypes/model/emoji.go index 520bf919..e9ef9546 100644 --- a/pkg/mastotypes/model/emoji.go +++ b/pkg/mastotypes/model/emoji.go @@ -18,6 +18,7 @@ package mastotypes +// Emoji represents a custom emoji. See https://docs.joinmastodon.org/entities/emoji/ type Emoji struct { // REQUIRED diff --git a/pkg/mastotypes/model/scheduledstatus.go b/pkg/mastotypes/model/scheduledstatus.go new file mode 100644 index 00000000..ff45eaad --- /dev/null +++ b/pkg/mastotypes/model/scheduledstatus.go @@ -0,0 +1,39 @@ +/* + GoToSocial + Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package mastotypes + +// ScheduledStatus represents a status that will be published at a future scheduled date. See https://docs.joinmastodon.org/entities/scheduledstatus/ +type ScheduledStatus struct { + ID string `json:"id"` + ScheduledAt string `json:"scheduled_at"` + Params *StatusParams `json:"params"` + MediaAttachments []Attachment `json:"media_attachments"` +} + +// StatusParams represents parameters for a scheduled status. See https://docs.joinmastodon.org/entities/scheduledstatus/ +type StatusParams struct { + Text string `json:"text"` + InReplyToID string `json:"in_reply_to_id,omitempty"` + MediaIDs []string `json:"media_ids,omitempty"` + Sensitive bool `json:"sensitive,omitempty"` + SpoilerText string `json:"spoiler_text,omitempty"` + Visibility string `json:"visibility"` + ScheduledAt string `json:"scheduled_at,omitempty"` + ApplicationID string `json:"application_id"` +}