feat: add reblogging (boosting) support #23
4 changed files with 61 additions and 12 deletions
|
@ -153,3 +153,29 @@ func (g *Client) GetLikedStatuses(limit int, resourceName string) (model.StatusL
|
||||||
|
|
||||||
return liked, nil
|
return liked, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *Client) ReblogStatus(statusID string) error {
|
||||||
|
url := g.Authentication.Instance + "/api/v1/statuses/" + statusID + "/reblog"
|
||||||
|
|
||||||
|
if err := g.sendRequest(http.MethodPost, url, nil, nil); err != nil {
|
||||||
|
return fmt.Errorf(
|
||||||
|
"received an error after sending the request to reblog the status; %w",
|
||||||
|
err,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Client) UnreblogStatus(statusID string) error {
|
||||||
|
url := g.Authentication.Instance + "/api/v1/statuses/" + statusID + "/unreblog"
|
||||||
|
|
||||||
|
if err := g.sendRequest(http.MethodPost, url, nil, nil); err != nil {
|
||||||
|
return fmt.Errorf(
|
||||||
|
"received an error after sending the request to un-reblog the status; %w",
|
||||||
|
err,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -187,9 +187,14 @@ func (a *AddExecutor) addStatusToBookmarks(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *AddExecutor) addToStatus(gtsClient *client.Client) error {
|
func (a *AddExecutor) addToStatus(gtsClient *client.Client) error {
|
||||||
|
if a.statusID == "" {
|
||||||
|
return FlagNotSetError{flagText: flagStatusID}
|
||||||
|
}
|
||||||
|
|
||||||
funcMap := map[string]func(*client.Client) error{
|
funcMap := map[string]func(*client.Client) error{
|
||||||
resourceStar: a.addStarToStatus,
|
resourceStar: a.addStarToStatus,
|
||||||
resourceLike: a.addStarToStatus,
|
resourceLike: a.addStarToStatus,
|
||||||
|
resourceBoost: a.addBoostToStatus,
|
||||||
}
|
}
|
||||||
|
|
||||||
doFunc, ok := funcMap[a.resourceType]
|
doFunc, ok := funcMap[a.resourceType]
|
||||||
|
@ -204,10 +209,6 @@ func (a *AddExecutor) addToStatus(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *AddExecutor) addStarToStatus(gtsClient *client.Client) error {
|
func (a *AddExecutor) addStarToStatus(gtsClient *client.Client) error {
|
||||||
if a.statusID == "" {
|
|
||||||
return FlagNotSetError{flagText: flagStatusID}
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := gtsClient.LikeStatus(a.statusID); err != nil {
|
if err := gtsClient.LikeStatus(a.statusID); err != nil {
|
||||||
return fmt.Errorf("unable to add the %s to the status: %w", a.resourceType, err)
|
return fmt.Errorf("unable to add the %s to the status: %w", a.resourceType, err)
|
||||||
}
|
}
|
||||||
|
@ -216,3 +217,13 @@ func (a *AddExecutor) addStarToStatus(gtsClient *client.Client) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *AddExecutor) addBoostToStatus(gtsClient *client.Client) error {
|
||||||
|
if err := gtsClient.ReblogStatus(a.statusID); err != nil {
|
||||||
|
return fmt.Errorf("unable to add the boost to the status: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("Successfully added the boost to the status.")
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ const (
|
||||||
resourceAccount = "account"
|
resourceAccount = "account"
|
||||||
resourceBlocked = "blocked"
|
resourceBlocked = "blocked"
|
||||||
resourceBookmarks = "bookmarks"
|
resourceBookmarks = "bookmarks"
|
||||||
|
resourceBoost = "boost"
|
||||||
resourceFollowers = "followers"
|
resourceFollowers = "followers"
|
||||||
resourceFollowing = "following"
|
resourceFollowing = "following"
|
||||||
resourceInstance = "instance"
|
resourceInstance = "instance"
|
||||||
|
|
|
@ -178,9 +178,14 @@ func (r *RemoveExecutor) removeStatusFromBookmarks(gtsClient *client.Client) err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RemoveExecutor) removeFromStatus(gtsClient *client.Client) error {
|
func (r *RemoveExecutor) removeFromStatus(gtsClient *client.Client) error {
|
||||||
|
if r.statusID == "" {
|
||||||
|
return FlagNotSetError{flagText: flagStatusID}
|
||||||
|
}
|
||||||
|
|
||||||
funcMap := map[string]func(*client.Client) error{
|
funcMap := map[string]func(*client.Client) error{
|
||||||
resourceStar: r.removeStarFromStatus,
|
resourceStar: r.removeStarFromStatus,
|
||||||
resourceLike: r.removeStarFromStatus,
|
resourceLike: r.removeStarFromStatus,
|
||||||
|
resourceBoost: r.removeBoostFromStatus,
|
||||||
}
|
}
|
||||||
|
|
||||||
doFunc, ok := funcMap[r.resourceType]
|
doFunc, ok := funcMap[r.resourceType]
|
||||||
|
@ -195,10 +200,6 @@ func (r *RemoveExecutor) removeFromStatus(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RemoveExecutor) removeStarFromStatus(gtsClient *client.Client) error {
|
func (r *RemoveExecutor) removeStarFromStatus(gtsClient *client.Client) error {
|
||||||
if r.statusID == "" {
|
|
||||||
return FlagNotSetError{flagText: flagStatusID}
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := gtsClient.UnlikeStatus(r.statusID); err != nil {
|
if err := gtsClient.UnlikeStatus(r.statusID); err != nil {
|
||||||
return fmt.Errorf("unable to remove the %s from the status: %w", r.resourceType, err)
|
return fmt.Errorf("unable to remove the %s from the status: %w", r.resourceType, err)
|
||||||
}
|
}
|
||||||
|
@ -207,3 +208,13 @@ func (r *RemoveExecutor) removeStarFromStatus(gtsClient *client.Client) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *RemoveExecutor) removeBoostFromStatus(gtsClient *client.Client) error {
|
||||||
|
if err := gtsClient.UnreblogStatus(r.statusID); err != nil {
|
||||||
|
return fmt.Errorf("unable to remove the boost from the status: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("Successfully removed the boost from the status.")
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue