fix: update internal models for GoToSocial v0.15.0

Update the internal models for the client in line with the GoToSocial
v0.15.0 API.

Improve the output of the instance information.
This commit is contained in:
Dan Anglin 2024-05-19 15:26:13 +01:00
parent 32ca448ae7
commit b91ebe5864
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
3 changed files with 67 additions and 53 deletions

View file

@ -8,32 +8,34 @@ import (
) )
type Account struct { type Account struct {
Acct string `json:"acct"` Acct string `json:"acct"`
Avatar string `json:"avatar"` Avatar string `json:"avatar"`
AvatarStatic string `json:"avatar_static"` AvatarStatic string `json:"avatar_static"`
CustomCSS string `json:"custom_css"` CustomCSS string `json:"custom_css"`
Header string `json:"header"` Header string `json:"header"`
HeaderStatic string `json:"header_static"` HeaderStatic string `json:"header_static"`
ID string `json:"id"` ID string `json:"id"`
LastStatusAt string `json:"last_status_at"` LastStatusAt string `json:"last_status_at"`
DisplayName string `json:"display_name"` DisplayName string `json:"display_name"`
Emojis []Emoji `json:"emojis"` Emojis []Emoji `json:"emojis"`
EnableRSS bool `json:"enable_rss"` EnableRSS bool `json:"enable_rss"`
Bot bool `json:"bot"` Bot bool `json:"bot"`
Locked bool `json:"locked"` Locked bool `json:"locked"`
Suspended bool `json:"suspended"` Suspended bool `json:"suspended"`
Discoverable bool `json:"discoverable"` Discoverable bool `json:"discoverable"`
Fields []Field `json:"fields"` HideCollections bool `json:"hide_collections"`
FollowersCount int `json:"followers_count"` Fields []Field `json:"fields"`
FollowingCount int `json:"following_count"` FollowersCount int `json:"followers_count"`
CreatedAt time.Time `json:"created_at"` FollowingCount int `json:"following_count"`
MuteExpiresAt time.Time `json:"mute_expires_at"` CreatedAt time.Time `json:"created_at"`
Note string `json:"note"` MuteExpiresAt time.Time `json:"mute_expires_at"`
Role AccountRole `json:"role"` Note string `json:"note"`
Source Source `json:"source"` Role AccountRole `json:"role"`
StatusCount int `json:"statuses_count"` Source Source `json:"source"`
URL string `json:"url"` StatusCount int `json:"statuses_count"`
Username string `json:"username"` Theme string `json:"theme"`
URL string `json:"url"`
Username string `json:"username"`
} }
type AccountRole struct { type AccountRole struct {
@ -41,13 +43,14 @@ type AccountRole struct {
} }
type Source struct { type Source struct {
Fields []Field `json:"fields"` Fields []Field `json:"fields"`
FollowRequestCount int `json:"follow_requests_count"` FollowRequestCount int `json:"follow_requests_count"`
Language string `json:"language"` Language string `json:"language"`
Note string `json:"note"` Note string `json:"note"`
Privacy string `json:"string"` Privacy string `json:"string"`
Sensitive bool `json:"sensitive"` Sensitive bool `json:"sensitive"`
StatusContentType string `json:"status_content_type"` StatusContentType string `json:"status_content_type"`
AlsoKnownAsURIs []string `json:"also_known_as_uris"`
} }
type Field struct { type Field struct {

View file

@ -7,20 +7,22 @@ import (
) )
type InstanceV2 struct { type InstanceV2 struct {
AccountDomain string `json:"account_domain"` AccountDomain string `json:"account_domain"`
Configuration InstanceConfiguration `json:"configuration"` Configuration InstanceConfiguration `json:"configuration"`
Contact InstanceV2Contact `json:"contact"` Contact InstanceV2Contact `json:"contact"`
Description string `json:"description"` Description string `json:"description"`
Domain string `json:"domain"` DescriptionText string `json:"description_text"`
Languages []string `json:"languages"` Domain string `json:"domain"`
Registrations InstanceV2Registrations `json:"registrations"` Languages []string `json:"languages"`
Rules []InstanceRule `json:"rules"` Registrations InstanceV2Registrations `json:"registrations"`
SourceURL string `json:"source_url"` Rules []InstanceRule `json:"rules"`
Terms string `json:"terms"` SourceURL string `json:"source_url"`
Thumbnail InstanceV2Thumbnail `json:"thumbnail"` Terms string `json:"terms"`
Title string `json:"title"` TermsText string `json:"terms_text"`
Usage InstanceV2Usage `json:"usage"` Thumbnail InstanceV2Thumbnail `json:"thumbnail"`
Version string `json:"version"` Title string `json:"title"`
Usage InstanceV2Usage `json:"usage"`
Version string `json:"version"`
} }
type InstanceConfiguration struct { type InstanceConfiguration struct {
@ -95,7 +97,7 @@ type InstanceV2Thumbnail struct {
ThumbnailDescription string `json:"thumbnail_description"` ThumbnailDescription string `json:"thumbnail_description"`
ThumbnailType string `json:"thumbnail_type"` ThumbnailType string `json:"thumbnail_type"`
URL string `json:"url"` URL string `json:"url"`
Version InstanceV2ThumbnailVersions `json:"versions"` Versions InstanceV2ThumbnailVersions `json:"versions"`
} }
type InstanceV2ThumbnailVersions struct { type InstanceV2ThumbnailVersions struct {
@ -114,7 +116,13 @@ type InstanceV2Users struct {
func (i InstanceV2) String() string { func (i InstanceV2) String() string {
format := ` format := `
%s %s
%s - %s %s
%s
%s
%s
%s
%s %s
%s %s
@ -130,11 +138,14 @@ func (i InstanceV2) String() string {
return fmt.Sprintf( return fmt.Sprintf(
format, format,
utilities.HeaderFormat("INSTANCE:"), utilities.HeaderFormat("INSTANCE TITLE:"),
i.Title, i.Title,
i.Description, utilities.HeaderFormat("INSTANCE DESCRIPTION:"),
utilities.WrapLines(i.DescriptionText, "\n ", 80),
utilities.HeaderFormat("DOMAIN:"), utilities.HeaderFormat("DOMAIN:"),
i.Domain, i.Domain,
utilities.HeaderFormat("TERMS AND CONDITIONS:"),
utilities.WrapLines(i.TermsText, "\n ", 80),
utilities.HeaderFormat("VERSION:"), utilities.HeaderFormat("VERSION:"),
i.Version, i.Version,
utilities.HeaderFormat("CONTACT:"), utilities.HeaderFormat("CONTACT:"),

View file

@ -28,7 +28,7 @@ type Status struct {
Poll Poll `json:"poll"` Poll Poll `json:"poll"`
Reblog StatusReblogged `json:"reblog"` Reblog StatusReblogged `json:"reblog"`
Reblogged bool `json:"reblogged"` Reblogged bool `json:"reblogged"`
RebloggsCount int `json:"reblogs_count"` ReblogsCount int `json:"reblogs_count"`
RepliesCount int `json:"replies_count"` RepliesCount int `json:"replies_count"`
Sensitive bool `json:"sensitive"` Sensitive bool `json:"sensitive"`
SpolierText string `json:"spoiler_text"` SpolierText string `json:"spoiler_text"`
@ -188,7 +188,7 @@ func (s Status) String() string {
utilities.HeaderFormat("CREATED AT:"), utilities.HeaderFormat("CREATED AT:"),
utilities.FormatTime(s.CreatedAt), utilities.FormatTime(s.CreatedAt),
utilities.HeaderFormat("STATS:"), utilities.HeaderFormat("STATS:"),
s.RebloggsCount, s.ReblogsCount,
s.FavouritesCount, s.FavouritesCount,
s.RepliesCount, s.RepliesCount,
utilities.HeaderFormat("VISIBILITY:"), utilities.HeaderFormat("VISIBILITY:"),