checkpoint: can now create statuses with media attachments

This commit is contained in:
Dan Anglin 2024-08-14 14:02:09 +01:00
parent f3a5887cb9
commit 795e344198
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
2 changed files with 40 additions and 27 deletions

View file

@ -38,18 +38,19 @@ func (g *Client) GetStatus(statusID string) (model.Status, error) {
}
type CreateStatusForm struct {
Content string `json:"status"`
InReplyTo string `json:"in_reply_to_id"`
Language string `json:"language"`
SpoilerText string `json:"spoiler_text"`
Boostable bool `json:"boostable"`
Federated bool `json:"federated"`
Likeable bool `json:"likeable"`
Replyable bool `json:"replyable"`
Sensitive bool `json:"sensitive"`
Poll *CreateStatusPollForm `json:"poll,omitempty"`
ContentType model.StatusContentType `json:"content_type"`
Visibility model.StatusVisibility `json:"visibility"`
Content string `json:"status"`
InReplyTo string `json:"in_reply_to_id"`
Language string `json:"language"`
SpoilerText string `json:"spoiler_text"`
Boostable bool `json:"boostable"`
Federated bool `json:"federated"`
Likeable bool `json:"likeable"`
Replyable bool `json:"replyable"`
Sensitive bool `json:"sensitive"`
Poll *CreateStatusPollForm `json:"poll,omitempty"`
ContentType model.StatusContentType `json:"content_type"`
Visibility model.StatusVisibility `json:"visibility"`
AttachmentIDs []string `json:"media_ids,omitempty"`
}
type CreateStatusPollForm struct {

View file

@ -76,12 +76,19 @@ func (c *CreateExecutor) createStatus(gtsClient *client.Client) error {
return fmt.Errorf("unable to get the status contents from %q: %w", c.fromFile, err)
}
default:
return EmptyContentError{
ResourceType: resourceStatus,
Hint: "please use --" + flagContent + " or --" + flagFromFile,
if c.attachmentIDs.Empty() {
// TODO: revisit this error type
return EmptyContentError{
ResourceType: resourceStatus,
Hint: "please use --" + flagContent + " or --" + flagFromFile,
}
}
}
if c.addPoll && !c.attachmentIDs.Empty() {
return fmt.Errorf("attaching media to a poll is not allowed")
}
preferences, err := gtsClient.GetUserPreferences()
if err != nil {
fmt.Println("WARNING: Unable to get your posting preferences: %w", err)
@ -116,18 +123,23 @@ func (c *CreateExecutor) createStatus(gtsClient *client.Client) error {
}
form := client.CreateStatusForm{
Content: content,
ContentType: parsedContentType,
Language: language,
SpoilerText: c.spoilerText,
Boostable: c.boostable,
Federated: c.federated,
InReplyTo: c.inReplyTo,
Likeable: c.likeable,
Replyable: c.replyable,
Sensitive: sensitive,
Visibility: parsedVisibility,
Poll: nil,
Content: content,
ContentType: parsedContentType,
Language: language,
SpoilerText: c.spoilerText,
Boostable: c.boostable,
Federated: c.federated,
InReplyTo: c.inReplyTo,
Likeable: c.likeable,
Replyable: c.replyable,
Sensitive: sensitive,
Visibility: parsedVisibility,
Poll: nil,
AttachmentIDs: nil,
}
if !c.attachmentIDs.Empty() {
form.AttachmentIDs = c.attachmentIDs
}
if c.addPoll {