checkpoint: add and remove a star/like from a status

This commit is contained in:
Dan Anglin 2024-06-04 13:28:05 +01:00
parent 66c530d524
commit 708816476a
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
4 changed files with 93 additions and 1 deletions

View file

@ -110,3 +110,29 @@ func (g *Client) RemoveStatusFromBookmarks(statusID string) error {
return nil return nil
} }
func (g *Client) LikeStatus(statusID string) error {
url := g.Authentication.Instance + "/api/v1/statuses/" + statusID + "/favourite"
if err := g.sendRequest(http.MethodPost, url, nil, nil); err != nil {
return fmt.Errorf(
"received an error after sending the request to like the status: %w",
err,
)
}
return nil
}
func (g *Client) UnlikeStatus(statusID string) error {
url := g.Authentication.Instance + "/api/v1/statuses/" + statusID + "/unfavourite"
if err := g.sendRequest(http.MethodPost, url, nil, nil); err != nil {
return fmt.Errorf(
"received an error after sending the request to unlike the status: %w",
err,
)
}
return nil
}

View file

@ -53,6 +53,7 @@ func (a *AddExecutor) Execute() error {
resourceList: a.addToList, resourceList: a.addToList,
resourceAccount: a.addToAccount, resourceAccount: a.addToAccount,
resourceBookmarks: a.addToBookmarks, resourceBookmarks: a.addToBookmarks,
resourceStatus: a.addToStatus,
} }
doFunc, ok := funcMap[a.toResourceType] doFunc, ok := funcMap[a.toResourceType]
@ -184,3 +185,34 @@ func (a *AddExecutor) addStatusToBookmarks(gtsClient *client.Client) error {
return nil return nil
} }
func (a *AddExecutor) addToStatus(gtsClient *client.Client) error {
funcMap := map[string]func(*client.Client) error{
resourceStar: a.addStarToStatus,
resourceLike: a.addStarToStatus,
}
doFunc, ok := funcMap[a.resourceType]
if !ok {
return UnsupportedAddOperationError{
ResourceType: a.resourceType,
AddToResourceType: a.toResourceType,
}
}
return doFunc(gtsClient)
}
func (a *AddExecutor) addStarToStatus(gtsClient *client.Client) error {
if a.statusID == "" {
return FlagNotSetError{flagText: flagStatusID}
}
if err := gtsClient.LikeStatus(a.statusID); err != nil {
return fmt.Errorf("unable to add the %s to the status: %w", a.resourceType, err)
}
fmt.Printf("Successfully added a %s to the status.\n", a.resourceType)
return nil
}

View file

@ -37,12 +37,14 @@ const (
resourceAccount = "account" resourceAccount = "account"
resourceBlocked = "blocked" resourceBlocked = "blocked"
resourceBookmarks = "bookmarks"
resourceFollowers = "followers" resourceFollowers = "followers"
resourceFollowing = "following" resourceFollowing = "following"
resourceInstance = "instance" resourceInstance = "instance"
resourceLike = "like"
resourceList = "list" resourceList = "list"
resourceNote = "note" resourceNote = "note"
resourceStatus = "status" resourceStatus = "status"
resourceStar = "star"
resourceTimeline = "timeline" resourceTimeline = "timeline"
resourceBookmarks = "bookmarks"
) )

View file

@ -51,6 +51,7 @@ func (r *RemoveExecutor) Execute() error {
resourceList: r.removeFromList, resourceList: r.removeFromList,
resourceAccount: r.removeFromAccount, resourceAccount: r.removeFromAccount,
resourceBookmarks: r.removeFromBookmarks, resourceBookmarks: r.removeFromBookmarks,
resourceStatus: r.removeFromStatus,
} }
doFunc, ok := funcMap[r.fromResourceType] doFunc, ok := funcMap[r.fromResourceType]
@ -175,3 +176,34 @@ func (r *RemoveExecutor) removeStatusFromBookmarks(gtsClient *client.Client) err
return nil return nil
} }
func (r *RemoveExecutor) removeFromStatus(gtsClient *client.Client) error {
funcMap := map[string]func(*client.Client) error{
resourceStar: r.removeStarFromStatus,
resourceLike: r.removeStarFromStatus,
}
doFunc, ok := funcMap[r.resourceType]
if !ok {
return UnsupportedRemoveOperationError{
ResourceType: r.resourceType,
RemoveFromResourceType: r.fromResourceType,
}
}
return doFunc(gtsClient)
}
func (r *RemoveExecutor) removeStarFromStatus(gtsClient *client.Client) error {
if r.statusID == "" {
return FlagNotSetError{flagText: flagStatusID}
}
if err := gtsClient.UnlikeStatus(r.statusID); err != nil {
return fmt.Errorf("unable to remove the %s from the status: %w", r.resourceType, err)
}
fmt.Printf("Successfully removed the %s from the status.\n", r.resourceType)
return nil
}