diff -r 8f478162d991 -r 05c40b36d3b2 vendor/github.com/McKael/madon/v3/types.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/github.com/McKael/madon/v3/types.go Sat Feb 04 12:58:35 2023 +0100 @@ -0,0 +1,265 @@ +/* +Copyright 2017-2018 Mikael Berthe +Copyright 2017 Ollivier Robert + +Licensed under the MIT license. Please see the LICENSE file is this directory. +*/ + +package madon + +import ( + "time" +) + +// MastodonDate is a custom type for the timestamps returned by some API calls +type MastodonDate struct { + time.Time +} + +// Client contains data for a madon client application +type Client struct { + Name string // Name of the client + ID string // Application ID + Secret string // Application secret + APIBase string // API prefix URL + InstanceURL string // Instance base URL + + UserToken *UserToken // User token +} + +/* +Entities - Everything manipulated/returned by the API +*/ + +// DomainName is a domain name string, as returned by the domain_blocks API +type DomainName string + +// InstancePeer is a peer name, as returned by the instance/peers API +type InstancePeer string + +// Account represents a Mastodon account entity +type Account struct { + ID int64 `json:"id,string"` + Username string `json:"username"` + Acct string `json:"acct"` + DisplayName string `json:"display_name"` + Note string `json:"note"` + URL string `json:"url"` + Avatar string `json:"avatar"` + AvatarStatic string `json:"avatar_static"` + Header string `json:"header"` + HeaderStatic string `json:"header_static"` + Locked bool `json:"locked"` + CreatedAt time.Time `json:"created_at"` + FollowersCount int64 `json:"followers_count"` + FollowingCount int64 `json:"following_count"` + StatusesCount int64 `json:"statuses_count"` + Moved *Account `json:"moved"` + Bot bool `json:"bot"` + Emojis []Emoji `json:"emojis"` + Fields *[]Field `json:"fields"` + Source *SourceParams `json:"source"` +} + +// Application represents a Mastodon application entity +type Application struct { + Name string `json:"name"` + Website string `json:"website"` +} + +// Attachment represents a Mastodon media attachment entity +type Attachment struct { + ID int64 `json:"id,string"` + Type string `json:"type"` + URL string `json:"url"` + RemoteURL *string `json:"remote_url"` + PreviewURL string `json:"preview_url"` + TextURL *string `json:"text_url"` + Meta *struct { + Original struct { + Size string `json:"size"` + Aspect float64 `json:"aspect"` + Width int `json:"width"` + Height int `json:"height"` + } `json:"original"` + Small struct { + Size string `json:"size"` + Aspect float64 `json:"aspect"` + Width int `json:"width"` + Height int `json:"height"` + } `json:"small"` + } `json:"meta"` + Description *string `json:"description"` +} + +// Card represents a Mastodon preview card entity +type Card struct { + URL string `json:"url"` + Title string `json:"title"` + Description string `json:"description"` + Image string `json:"image"` + Type *string `json:"type"` + AuthorName *string `json:"author_name"` + AuthorURL *string `json:"author_url"` + ProviderName *string `json:"provider_name"` + ProviderURL *string `json:"provider_url"` + EmbedURL *string `json:"embed_url"` + HTML *string `json:"html"` + Width *int `json:"width"` + Height *int `json:"height"` +} + +// Context represents a Mastodon context entity +type Context struct { + Ancestors []Status `json:"ancestors"` + Descendants []Status `json:"descendants"` +} + +// Emoji represents a Mastodon emoji entity +type Emoji struct { + ShortCode string `json:"shortcode"` + URL string `json:"url"` + StaticURL string `json:"static_url"` + VisibleInPicker bool `json:"visible_in_picker"` +} + +// Error represents a Mastodon error entity +type Error struct { + Text string `json:"error"` +} + +// Instance represents a Mastodon instance entity +type Instance struct { + URI string `json:"uri"` + Title string `json:"title"` + Description string `json:"description"` + Email string `json:"email"` + Version string `json:"version"` + + URLs struct { + SteamingAPI string `json:"streaming_api"` + } `json:"urls"` + Stats struct { + UserCount int64 `json:"user_count"` + StatusCount int64 `json:"status_count"` + DomainCount int64 `json:"domain_count"` + } `json:"stats"` + Thumbnail *string `json:"thumbnail"` + Languages []string `json:"languages"` + ContactAccount *Account `json:"contact_account"` +} + +// List represents a Mastodon list entity +type List struct { + ID int64 `json:"id,string"` + Title string `json:"title"` +} + +// Mention represents a Mastodon mention entity +type Mention struct { + ID int64 `json:"id,string"` + URL string `json:"url"` + Username string `json:"username"` + Acct string `json:"acct"` +} + +// Notification represents a Mastodon notification entity +type Notification struct { + ID int64 `json:"id,string"` + Type string `json:"type"` + CreatedAt time.Time `json:"created_at"` + Account *Account `json:"account"` + Status *Status `json:"status"` +} + +// Relationship represents a Mastodon relationship entity +type Relationship struct { + ID int64 `json:"id,string"` + Following bool `json:"following"` + //ShowingReblogs bool `json:"showing_reblogs"` // Incoherent type + FollowedBy bool `json:"followed_by"` + Blocking bool `json:"blocking"` + Muting bool `json:"muting"` + Requested bool `json:"requested"` + DomainBlocking bool `jsin:"domain_blocking"` + MutingNotifications bool `json:"muting_notifications"` + ShowingReblogs bool `json:"showing_reblogs"` + Endorsed bool `json:"endorsed"` +} + +// Report represents a Mastodon report entity +type Report struct { + ID int64 `json:"id,string"` + ActionTaken string `json:"action_taken"` +} + +// Results represents a Mastodon search results entity +type Results struct { + Accounts []Account `json:"accounts"` + Statuses []Status `json:"statuses"` + Hashtags []Tag `json:"hashtags"` +} + +// Status represents a Mastodon status entity +type Status struct { + ID int64 `json:"id,string"` + URI string `json:"uri"` + URL string `json:"url"` + Account *Account `json:"account"` + InReplyToID *int64 `json:"in_reply_to_id,string"` + InReplyToAccountID *int64 `json:"in_reply_to_account_id,string"` + Reblog *Status `json:"reblog"` + Content string `json:"content"` + CreatedAt time.Time `json:"created_at"` + ReblogsCount int64 `json:"reblogs_count"` + FavouritesCount int64 `json:"favourites_count"` + RepliesCount int64 `json:"replies_count"` + Reblogged bool `json:"reblogged"` + Favourited bool `json:"favourited"` + Muted bool `json:"muted"` + Pinned bool `json:"pinned"` + Sensitive bool `json:"sensitive"` + SpoilerText string `json:"spoiler_text"` + Visibility string `json:"visibility"` + MediaAttachments []Attachment `json:"media_attachments"` + Mentions []Mention `json:"mentions"` + Tags []Tag `json:"tags"` + Emojis []Emoji `json:"emojis"` + Application *Application `json:"application"` + Language *string `json:"language"` +} + +// Tag represents a Mastodon tag entity +type Tag struct { + Name string `json:"name"` + URL string `json:"url"` + History []struct { + Day MastodonDate `json:"day"` + Uses int64 `json:"uses,string"` + Accounts int64 `json:"accounts,string"` + } `json:"history"` +} + +// WeekActivity represents a Mastodon instance activity "week" entity +type WeekActivity struct { + Week MastodonDate `json:"week"` + Statuses int64 `json:"statuses,string"` + Logins int64 `json:"logins,string"` + Registrations int64 `json:"registrations,string"` +} + +// Field is a single field structure +// (Used for the verify_credentials endpoint) +type Field struct { + Name string `json:"name"` + Value string `json:"value"` +} + +// SourceParams is a source params structure +type SourceParams struct { // Used for verify_credentials + Privacy *string `json:"privacy,omitempty"` + Language *string `json:"language,omitempty"` + Sensitive *bool `json:"sensitive,omitempty"` + Note *string `json:"note,omitempty"` + Fields *[]Field `json:"fields,omitempty"` +}