mstdn/ent.Account

master
Charles Iliya Krempeaux 2024-08-08 12:22:10 -07:00
parent 5b28f7c14e
commit 837edc6382
2 changed files with 312 additions and 495 deletions

View File

@ -1,394 +1,42 @@
package ent package ent
import ( import (
"encoding/json"
"github.com/reiver/go-erorr"
"github.com/reiver/go-nul" "github.com/reiver/go-nul"
"github.com/reiver/go-jsonint" "github.com/reiver/go-jsonint"
"github.com/reiver/go-opt" "github.com/reiver/go-opt"
) )
var _ json.Marshaler = Account{}
// Account represents a Mastodon API "Account". // Account represents a Mastodon API "Account".
// //
// See: // See:
// https://docs.joinmastodon.org/entities/Account/ // https://docs.joinmastodon.org/entities/Account/
type Account struct { type Account struct {
ID opt.Optional[string] `json:"id"` ID opt.Optional[string] `json:"id"`
UserName opt.Optional[string] `json:"username"` UserName opt.Optional[string] `json:"username,omitempty"`
Acct opt.Optional[string] `json:"acct"` Acct opt.Optional[string] `json:"acct,omitempty"`
URL opt.Optional[string] `json:"url"` URL opt.Optional[string] `json:"url,omitempty"`
URI opt.Optional[string] `json:"uri"` // currently undocumented, but is included in in account JSON returned from the Mastodon API on mastodon.social. URI opt.Optional[string] `json:"uri,omitempty"` // currently undocumented, but is included in in account JSON returned from the Mastodon API on mastodon.social.
DisplayName opt.Optional[string] `json:"display_name"` DisplayName opt.Optional[string] `json:"display_name,omitempty"`
Note opt.Optional[string] `json:"note"` Note opt.Optional[string] `json:"note,omitempty"`
Avatar opt.Optional[string] `json:"avatar"` Avatar opt.Optional[string] `json:"avatar,omitempty"`
AvatarStatic opt.Optional[string] `json:"avatar_static"` AvatarStatic opt.Optional[string] `json:"avatar_static,omitempty"`
Header opt.Optional[string] `json:"header"` Header opt.Optional[string] `json:"header,omitempty"`
HeaderStatic opt.Optional[string] `json:"header_static"` HeaderStatic opt.Optional[string] `json:"header_static,omitempty"`
Fields []Field `json:"fields"` Fields []Field `json:"fields,omitempty"`
Emojis []CustomEmoji `json:"emojis"` Emojis []CustomEmoji `json:"emojis,omitempty"`
Locked opt.Optional[bool] `json:"locked"` Locked opt.Optional[bool] `json:"locked,omitempty"`
Bot opt.Optional[bool] `json:"bot"` Bot opt.Optional[bool] `json:"bot,omitempty"`
Group opt.Optional[bool] `json:"group"` Group opt.Optional[bool] `json:"group,omitempty"`
Discoverable nul.Nullable[bool] `json:"discoverable"` Discoverable nul.Nullable[bool] `json:"discoverable,omitempty"`
NoIndex nul.Nullable[bool] `json:"noindex"` NoIndex nul.Nullable[bool] `json:"noindex,omitempty"`
Moved nul.Nullable[AccountHolder] `json:"moved"` Moved nul.Nullable[AccountHolder] `json:"moved,omitempty"`
Suspended opt.Optional[bool] `json:"suspended"` Suspended opt.Optional[bool] `json:"suspended,omitempty"`
Limited opt.Optional[bool] `json:"limited"` Limited opt.Optional[bool] `json:"limited,omitempty"`
CreatedAt opt.Optional[string] `json:"created_at"` CreatedAt opt.Optional[string] `json:"created_at,omitempty"`
LastStatusAt nul.Nullable[string] `json:"last_status_at"` LastStatusAt nul.Nullable[string] `json:"last_status_at,omitempty"`
StatusesCount opt.Optional[jsonint.Int] `json:"statuses_count"` StatusesCount opt.Optional[jsonint.Int] `json:"statuses_count,omitempty"`
FollowersCount opt.Optional[jsonint.Int] `json:"followers_count"` FollowersCount opt.Optional[jsonint.Int] `json:"followers_count,omitempty"`
FollowingCount opt.Optional[jsonint.Int] `json:"following_count"` FollowingCount opt.Optional[jsonint.Int] `json:"following_count,omitempty"`
Roles []Role `json:"roles"` Roles []Role `json:"roles,omitempty"`
MuteExpiresAt nul.Nullable[string] `json:"mute_expires_at"` MuteExpiresAt nul.Nullable[string] `json:"mute_expires_at,omitempty"`
}
func (receiver Account) MarshalJSON() ([]byte, error) {
var buffer []byte
buffer = append(buffer, "{"...)
{
buffer = append(buffer, `"id":`...)
marshaled, err := json.Marshal(receiver.ID)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.ID as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"username":`...)
marshaled, err := json.Marshal(receiver.UserName)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.UserName as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"acct":`...)
marshaled, err := json.Marshal(receiver.Acct)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Acct as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"url":`...)
marshaled, err := json.Marshal(receiver.URL)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.URL as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"uri":`...)
marshaled, err := json.Marshal(receiver.URI)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.URI as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"display_name":`...)
marshaled, err := json.Marshal(receiver.DisplayName)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.DisplayName as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"note":`...)
marshaled, err := json.Marshal(receiver.Note)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Note as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"avatar":`...)
marshaled, err := json.Marshal(receiver.Avatar)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Avatar as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"avatar_static":`...)
marshaled, err := json.Marshal(receiver.AvatarStatic)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.AvatarStatic as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"header":`...)
marshaled, err := json.Marshal(receiver.Header)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Header as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"header_static":`...)
marshaled, err := json.Marshal(receiver.HeaderStatic)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.HeaderStatic as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"fields":`...)
var src interface{} = receiver.Fields
if nil == receiver.Fields {
src = []Field{}
}
marshaled, err := json.Marshal(src)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Fields as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"emojis":`...)
var src interface{} = receiver.Emojis
if nil == receiver.Emojis {
src = []CustomEmoji{}
}
marshaled, err := json.Marshal(src)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Emojis as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"locked":`...)
marshaled, err := json.Marshal(receiver.Locked)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Locked as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"bot":`...)
marshaled, err := json.Marshal(receiver.Bot)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Bot as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"group":`...)
marshaled, err := json.Marshal(receiver.Group)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Group as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"discoverable":`...)
marshaled, err := json.Marshal(receiver.Discoverable)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Discoverable as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
if nul.Nothing[bool]() != receiver.NoIndex {
buffer = append(buffer, `,"noindex":`...)
marshaled, err := json.Marshal(receiver.NoIndex)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.NoIndex as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
}
{
if nul.Nothing[AccountHolder]() != receiver.Moved {
buffer = append(buffer, `,"moved":`...)
marshaled, err := json.Marshal(receiver.Moved)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Moved as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
}
{
if opt.Nothing[bool]() != receiver.Suspended {
buffer = append(buffer, `,"suspended":`...)
marshaled, err := json.Marshal(receiver.Suspended)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Suspended as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
}
{
if opt.Nothing[bool]() != receiver.Limited {
buffer = append(buffer, `,"limited":`...)
marshaled, err := json.Marshal(receiver.Limited)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Limited as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
}
{
buffer = append(buffer, `,"created_at":`...)
marshaled, err := json.Marshal(receiver.CreatedAt)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.CreatedAt as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"last_status_at":`...)
marshaled, err := json.Marshal(receiver.LastStatusAt)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.LastStatusAt as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"statuses_count":`...)
marshaled, err := json.Marshal(receiver.StatusesCount)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.StatusesCount as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"followers_count":`...)
marshaled, err := json.Marshal(receiver.FollowersCount)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.FollowersCount as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
buffer = append(buffer, `,"following_count":`...)
marshaled, err := json.Marshal(receiver.FollowingCount)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.FollowingCount as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
{
if nil != receiver.Roles {
buffer = append(buffer, `,"roles":`...)
marshaled, err := json.Marshal(receiver.Roles)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.Roles as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
}
{
if nul.Nothing[string]() != receiver.MuteExpiresAt {
buffer = append(buffer, `,"mute_expires_at":`...)
marshaled, err := json.Marshal(receiver.MuteExpiresAt)
if nil != err {
return nil, erorr.Errorf("mstdn/ent: could not marshal ent.Account.MuteExpiresAt as JSON: %w", err)
}
buffer = append(buffer, marshaled...)
}
}
buffer = append(buffer, "}"...)
return buffer, nil
} }

File diff suppressed because it is too large Load Diff