refactor: CreateStatusForm; fix: InvalidStatusVisibilityError

This commit is contained in:
Dan Anglin 2024-05-30 06:55:01 +01:00
parent 4038814d6a
commit 74220dd25e
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
3 changed files with 36 additions and 48 deletions

View file

@ -25,42 +25,20 @@ func (g *Client) GetStatus(statusID string) (model.Status, error) {
return status, nil return status, nil
} }
func (g *Client) CreateStatus( type CreateStatusForm struct {
content, Content string `json:"status"`
contentType, ContentType string `json:"content_type"`
language, Language string `json:"language"`
spoilerText string, SpoilerText string `json:"spoiler_text"`
boostable, Boostable bool `json:"boostable"`
federated, Federated bool `json:"federated"`
likeable, Likeable bool `json:"likeable"`
replyable, Replyable bool `json:"replyable"`
sensitive bool, Sensitive bool `json:"sensitive"`
visibility model.StatusVisibility, Visibility model.StatusVisibility `json:"visibility"`
) (model.Status, error) { }
form := struct {
ContentType string `json:"content_type"`
Language string `json:"language"`
SpoilerText string `json:"spoiler_text"`
Status string `json:"status"`
Boostable bool `json:"boostable"`
Federated bool `json:"federated"`
Likeable bool `json:"likeable"`
Replyable bool `json:"replyable"`
Sensitive bool `json:"sensitive"`
Visibility model.StatusVisibility `json:"visibility"`
}{
ContentType: contentType,
Language: language,
SpoilerText: spoilerText,
Status: content,
Boostable: boostable,
Federated: federated,
Likeable: likeable,
Sensitive: sensitive,
Replyable: replyable,
Visibility: visibility,
}
func (g *Client) CreateStatus(form CreateStatusForm) (model.Status, error) {
data, err := json.Marshal(form) data, err := json.Marshal(form)
if err != nil { if err != nil {
return model.Status{}, fmt.Errorf("unable to create the JSON form; %w", err) return model.Status{}, fmt.Errorf("unable to create the JSON form; %w", err)

View file

@ -126,21 +126,23 @@ func (c *CreateExecutor) createStatus(gtsClient *client.Client) error {
parsedVisibility := model.ParseStatusVisibility(visibility) parsedVisibility := model.ParseStatusVisibility(visibility)
if parsedVisibility == model.StatusVisibilityUnknown { if parsedVisibility == model.StatusVisibilityUnknown {
return fmt.Errorf("invalid status visibility %q", visibility) return InvalidStatusVisibilityError{Visibility: visibility}
} }
status, err := gtsClient.CreateStatus( form := client.CreateStatusForm{
c.content, Content: c.content,
c.contentType, ContentType: c.contentType,
language, Language: language,
c.spoilerText, SpoilerText: c.spoilerText,
c.boostable, Boostable: c.boostable,
c.federated, Federated: c.federated,
c.likeable, Likeable: c.likeable,
c.replyable, Replyable: c.replyable,
c.sensitive, Sensitive: c.sensitive,
parsedVisibility, Visibility: parsedVisibility,
) }
status, err := gtsClient.CreateStatus(form)
if err != nil { if err != nil {
return fmt.Errorf("unable to create the status; %w", err) return fmt.Errorf("unable to create the status; %w", err)
} }

View file

@ -53,3 +53,11 @@ type EmptyContentError struct{}
func (e EmptyContentError) Error() string { func (e EmptyContentError) Error() string {
return "content should not be empty" return "content should not be empty"
} }
type InvalidStatusVisibilityError struct {
Visibility string
}
func (e InvalidStatusVisibilityError) Error() string {
return "'" + e.Visibility + "' is an invalid status visibility value"
}