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

View file

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

View file

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