From e0d46bb7a621f28afedb2db198b3fe955561ff52 Mon Sep 17 00:00:00 2001 From: Charles Iliya Krempeaux Date: Thu, 8 Aug 2024 08:59:00 -0700 Subject: [PATCH] mstdn/ent.Status --- ent/status.go | 371 +++++--------------------------------------------- 1 file changed, 34 insertions(+), 337 deletions(-) diff --git a/ent/status.go b/ent/status.go index b40d988..8befcf0 100644 --- a/ent/status.go +++ b/ent/status.go @@ -1,9 +1,10 @@ package ent import ( - "encoding/json" + gojson "encoding/json" - "github.com/reiver/go-erorr" +// "github.com/reiver/go-erorr" + "github.com/reiver/go-json" "github.com/reiver/go-jsonint" "github.com/reiver/go-opt" "github.com/reiver/go-nul" @@ -11,342 +12,38 @@ import ( type Status struct { ID opt.Optional[string] `json:"id"` - URI nul.Nullable[string] `json:"uri"` - URL nul.Nullable[string] `json:"url"` - CreatedAt opt.Optional[string] `json:"created_at"` - Account Account `json:"account"` - Content opt.Optional[string] `json:"content"` - Visibility opt.Optional[string] `json:"visibility"` - Sensitive opt.Optional[bool] `json:"sensitive"` - SpoilerText opt.Optional[string] `json:"spoiler_text"` - MediaAttachments []MediaAttachment `json:"media_attachments"` - Application nul.Nullable[Application] `json:"application"` - Mentions []Mention `json:"mentions"` - Tags []Tag `json:"tags"` - Emojis []CustomEmoji `json:"emojis"` - ReblogsCount opt.Optional[jsonint.Int] `json:"reblogs_count"` - FavouritesCount opt.Optional[jsonint.Int] `json:"favourites_count"` - RepliesCount opt.Optional[jsonint.Int] `json:"replies_count"` - InReplyToID nul.Nullable[string] `json:"in_reply_to_id"` - InReplyToAccountID nul.Nullable[string] `json:"in_reply_to_account_id"` - Reblog json.RawMessage `json:"reblog"` - Poll nul.Nullable[Poll] `json:"poll"` - Card nul.Nullable[PreviewCard] `json:"card"` - Language nul.Nullable[string] `json:"language"` - Text nul.Nullable[string] `json:"text"` - EditedAt nul.Nullable[string] `json:"edited_at"` - Favourited opt.Optional[bool] `json:"favourited"` - Reblogged opt.Optional[bool] `json:"reblogged"` - Muted opt.Optional[bool] `json:"muted"` - Bookmarked opt.Optional[bool] `json:"bookmarked"` - Pinned opt.Optional[bool] `json:"pinned"` - Filtered json.RawMessage `json:"filtered"` + URI nul.Nullable[string] `json:"uri,omitempty"` + URL nul.Nullable[string] `json:"url,omitempty"` + CreatedAt opt.Optional[string] `json:"created_at,omitempty"` + Account Account `json:"account,omitempty"` + Content opt.Optional[string] `json:"content,omitempty"` + Visibility opt.Optional[string] `json:"visibility,omitempty"` + Sensitive opt.Optional[bool] `json:"sensitive,omitempty"` + SpoilerText opt.Optional[string] `json:"spoiler_text,omitempty"` + MediaAttachments []MediaAttachment `json:"media_attachments,omitempty"` + Application nul.Nullable[Application] `json:"application,omitempty"` + Mentions []Mention `json:"mentions,omitempty"` + Tags []Tag `json:"tags,omitempty"` + Emojis []CustomEmoji `json:"emojis,omitempty"` + ReblogsCount opt.Optional[jsonint.Int] `json:"reblogs_count,omitempty"` + FavouritesCount opt.Optional[jsonint.Int] `json:"favourites_count,omitempty"` + RepliesCount opt.Optional[jsonint.Int] `json:"replies_count,omitempty"` + InReplyToID nul.Nullable[string] `json:"in_reply_to_id,omitempty"` + InReplyToAccountID nul.Nullable[string] `json:"in_reply_to_account_id,omitempty"` + Reblog gojson.RawMessage `json:"reblog,omitempty"` + Poll nul.Nullable[Poll] `json:"poll,omitempty"` + Card nul.Nullable[PreviewCard] `json:"card,omitempty"` + Language nul.Nullable[string] `json:"language,omitempty"` + Text nul.Nullable[string] `json:"text,omitempty"` + EditedAt nul.Nullable[string] `json:"edited_at,omitempty"` + Favourited opt.Optional[bool] `json:"favourited,omitempty"` + Reblogged opt.Optional[bool] `json:"reblogged,omitempty"` + Muted opt.Optional[bool] `json:"muted,omitempty"` + Bookmarked opt.Optional[bool] `json:"bookmarked,omitempty"` + Pinned opt.Optional[bool] `json:"pinned,omitempty"` + Filtered gojson.RawMessage `json:"filtered,omitempty"` } func (receiver *Status) MarshalJSON() ([]byte, error) { - if nil == receiver { - return nil, errNilReceiver - } - - var buffer [1024]byte - var p []byte = buffer[0:0] - - p = append(p, '{') - - { - val, found := receiver.ID.Get() - if !found { - return nil, errNothingID - } - - const name = "id" - p = append(p, `"id":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - - { - val, found := receiver.URI.Get() - if found { - const name = "uri" - p = append(p, `,"uri":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - val, found := receiver.URL.Get() - if found { - const name = "url" - p = append(p, `,"url":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - val, found := receiver.CreatedAt.Get() - if found { - const name = "created_at" - p = append(p, `,"created_at":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - -//@TODO: Account - - { - val, found := receiver.Content.Get() - if found { - const name = "content" - p = append(p, `,"content":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - val, found := receiver.Visibility.Get() - if found { - const name = "visibility" - p = append(p, `,"visibility":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - val, found := receiver.Sensitive.Get() - if found { - const name = "sensitive" - p = append(p, `,"sensitive":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - val, found := receiver.SpoilerText.Get() - if found { - const name = "spoiler_text" - p = append(p, `,"spoiler_text":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - -//@TODO: MediaAttachments - -//@TODO: Application - -//@TODO: Mentions - - { - vals := receiver.Tags - if 0 < len(vals) { - const name = "tags" - p = append(p, `,"tags":`...) - - bytes, err := json.Marshal(vals) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - -//@TODO: Emojis - -//@TODO: ReblogsCount - -//@TODO: FavouritesCount - -//@TODO: RepliesCount - -//@TODO: InReplyToID - -//@TODO: InReplyToAccountID - -//@TODO: Reblog - -//@TODO: Poll - -//@TODO: Card - - { - val, found := receiver.Language.Get() - if found { - const name = "language" - p = append(p, `,"language":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - val, found := receiver.Text.Get() - if found { - const name = "text" - p = append(p, `,"text":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - val, found := receiver.EditedAt.Get() - if found { - const name = "edited_at" - p = append(p, `,"edited_at":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - val, found := receiver.Favourited.Get() - if found { - const name = "favourited" - p = append(p, `,"favourited":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - val, found := receiver.Reblogged.Get() - if found { - const name = "reblogged" - p = append(p, `,"reblogged":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - val, found := receiver.Muted.Get() - if found { - const name = "muted" - p = append(p, `,"muted":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - val, found := receiver.Bookmarked.Get() - if found { - const name = "bookmarked" - p = append(p, `,"bookmarked":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - val, found := receiver.Pinned.Get() - if found { - const name = "pinned" - p = append(p, `,"pinned":`...) - - bytes, err := json.Marshal(val) - if nil != err { - return nil, erorr.Errorf("problem marshaling %q: %w", name, err) - } - - p = append(p, bytes...) - } - } - - { - bytes := []byte(receiver.Filtered) - if 0 < len(bytes) { - const name = "filtered" - p = append(p, `,"filtered":`...) - - p = append(p, bytes...) - } - } - - p = append(p, '}') - - return p, nil + return json.Marshal(*receiver) }