fix: use account names instead of account IDs #10

Manually merged
dananglin merged 1 commit from get-aacount-id-by-account-name into main 2024-05-21 21:55:07 +01:00
9 changed files with 177 additions and 128 deletions

76
cmd/enbas/account.go Normal file
View file

@ -0,0 +1,76 @@
package main
import (
"fmt"
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
"codeflow.dananglin.me.uk/apollo/enbas/internal/config"
"codeflow.dananglin.me.uk/apollo/enbas/internal/model"
)
func getAccountID(gtsClient *client.Client, myAccount bool, accountName string) (string, error) {
var (
accountID string
err error
)
switch {
case myAccount:
accountID, err = getMyAccountID(gtsClient)
if err != nil {
return "", fmt.Errorf("unable to get your account ID; %w", err)
}
case accountName != "":
accountID, err = getTheirAccountID(gtsClient, accountName)
if err != nil {
return "", fmt.Errorf("unable to get their account ID; %w", err)
}
default:
return "", noAccountSpecifiedError{}
}
return accountID, nil
}
func getTheirAccountID(gtsClient *client.Client, accountURI string) (string, error) {
account, err := getAccount(gtsClient, accountURI)
if err != nil {
return "", fmt.Errorf("unable to retrieve your account; %w", err)
}
return account.ID, nil
}
func getMyAccountID(gtsClient *client.Client) (string, error) {
account, err := getMyAccount(gtsClient)
if err != nil {
return "", fmt.Errorf("received an error while getting your account details; %w", err)
}
return account.ID, nil
}
func getMyAccount(gtsClient *client.Client) (model.Account, error) {
authConfig, err := config.NewAuthenticationConfigFromFile()
if err != nil {
return model.Account{}, fmt.Errorf("unable to retrieve the authentication configuration; %w", err)
}
accountURI := authConfig.CurrentAccount
account, err := getAccount(gtsClient, accountURI)
if err != nil {
return model.Account{}, fmt.Errorf("unable to retrieve your account; %w", err)
}
return account, nil
}
func getAccount(gtsClient *client.Client, accountURI string) (model.Account, error) {
account, err := gtsClient.GetAccount(accountURI)
if err != nil {
return model.Account{}, fmt.Errorf("unable to retrieve the account details; %w", err)
}
return account, nil
}

View file

@ -12,7 +12,7 @@ type addCommand struct {
toResourceType string toResourceType string
listID string listID string
accountIDs accountIDs accountNames accountNames
} }
func newAddCommand(name, summary string) *addCommand { func newAddCommand(name, summary string) *addCommand {
@ -20,12 +20,12 @@ func newAddCommand(name, summary string) *addCommand {
command := addCommand{ command := addCommand{
FlagSet: flag.NewFlagSet(name, flag.ExitOnError), FlagSet: flag.NewFlagSet(name, flag.ExitOnError),
accountIDs: accountIDs(emptyArr), accountNames: accountNames(emptyArr),
} }
command.StringVar(&command.toResourceType, addToFlag, "", "specify the type of resource to add to") command.StringVar(&command.toResourceType, addToFlag, "", "specify the type of resource to add to")
command.StringVar(&command.listID, listIDFlag, "", "the ID of the list to add to") command.StringVar(&command.listID, listIDFlag, "", "the ID of the list to add to")
command.Var(&command.accountIDs, accountIDFlag, "the ID of the account to add to the list") command.Var(&command.accountNames, accountNameFlag, "the name of the account to add to the resource")
command.Usage = commandUsageFunc(name, summary, command.FlagSet) command.Usage = commandUsageFunc(name, summary, command.FlagSet)
@ -34,7 +34,7 @@ func newAddCommand(name, summary string) *addCommand {
func (c *addCommand) Execute() error { func (c *addCommand) Execute() error {
if c.toResourceType == "" { if c.toResourceType == "" {
return flagNotSetError{flagText: "add-to"} return flagNotSetError{flagText: addToFlag}
} }
funcMap := map[string]func(*client.Client) error{ funcMap := map[string]func(*client.Client) error{
@ -59,11 +59,21 @@ func (c *addCommand) addAccountsToList(gtsClient *client.Client) error {
return flagNotSetError{flagText: listIDFlag} return flagNotSetError{flagText: listIDFlag}
} }
if len(c.accountIDs) == 0 { if len(c.accountNames) == 0 {
return noAccountIDsSpecifiedError{} return noAccountSpecifiedError{}
} }
if err := gtsClient.AddAccountsToList(c.listID, []string(c.accountIDs)); err != nil { accountIDs := make([]string, len(c.accountNames))
for i := range c.accountNames {
accountID, err := getTheirAccountID(gtsClient, c.accountNames[i])
if err != nil {
return fmt.Errorf("unable to get the account ID for %s, %w", c.accountNames[i], err)
}
accountIDs[i] = accountID
}
if err := gtsClient.AddAccountsToList(c.listID, accountIDs); err != nil {
return fmt.Errorf("unable to add the accounts to the list; %w", err) return fmt.Errorf("unable to add the accounts to the list; %w", err)
} }

View file

@ -11,7 +11,7 @@ type blockCommand struct {
*flag.FlagSet *flag.FlagSet
resourceType string resourceType string
accountID string accountName string
unblock bool unblock bool
} }
@ -23,7 +23,7 @@ func newBlockCommand(name, summary string, unblock bool) *blockCommand {
} }
command.StringVar(&command.resourceType, resourceTypeFlag, "", "specify the type of resource to block or unblock") command.StringVar(&command.resourceType, resourceTypeFlag, "", "specify the type of resource to block or unblock")
command.StringVar(&command.accountID, accountIDFlag, "", "specify the ID of the account you want to block or unblock") command.StringVar(&command.accountName, accountNameFlag, "", "specify the account name in full (username@domain)")
command.Usage = commandUsageFunc(name, summary, command.FlagSet) command.Usage = commandUsageFunc(name, summary, command.FlagSet)
@ -48,16 +48,17 @@ func (c *blockCommand) Execute() error {
return doFunc(gtsClient) return doFunc(gtsClient)
} }
func (c *blockCommand) blockAccount(gts *client.Client) error { func (c *blockCommand) blockAccount(gtsClient *client.Client) error {
if c.accountID == "" { accountID, err := getAccountID(gtsClient, false, c.accountName)
return flagNotSetError{flagText: accountIDFlag} if err != nil {
return fmt.Errorf("received an error while getting the account ID; %w", err)
} }
if c.unblock { if c.unblock {
return c.unblockAccount(gts) return c.unblockAccount(gtsClient, accountID)
} }
if err := gts.BlockAccount(c.accountID); err != nil { if err := gtsClient.BlockAccount(accountID); err != nil {
return fmt.Errorf("unable to block the account; %w", err) return fmt.Errorf("unable to block the account; %w", err)
} }
@ -66,8 +67,8 @@ func (c *blockCommand) blockAccount(gts *client.Client) error {
return nil return nil
} }
func (c *blockCommand) unblockAccount(gts *client.Client) error { func (c *blockCommand) unblockAccount(gtsClient *client.Client, accountID string) error {
if err := gts.UnblockAccount(c.accountID); err != nil { if err := gtsClient.UnblockAccount(accountID); err != nil {
return fmt.Errorf("unable to unblock the account; %w", err) return fmt.Errorf("unable to unblock the account; %w", err)
} }

View file

@ -32,8 +32,8 @@ func (e unknownSubcommandError) Error() string {
return "unknown subcommand '" + e.subcommand + "'" return "unknown subcommand '" + e.subcommand + "'"
} }
type noAccountIDsSpecifiedError struct{} type noAccountSpecifiedError struct{}
func (e noAccountIDsSpecifiedError) Error() string { func (e noAccountSpecifiedError) Error() string {
return "no account IDs specified" return "no account specified in this request"
} }

View file

@ -2,13 +2,13 @@ package main
import "strings" import "strings"
type accountIDs []string type accountNames []string
func (a *accountIDs) String() string { func (a *accountNames) String() string {
return strings.Join(*a, ", ") return strings.Join(*a, ", ")
} }
func (a *accountIDs) Set(value string) error { func (a *accountNames) Set(value string) error {
if len(value) > 0 { if len(value) > 0 {
*a = append(*a, value) *a = append(*a, value)
} }

View file

@ -11,7 +11,7 @@ type followCommand struct {
*flag.FlagSet *flag.FlagSet
resourceType string resourceType string
accountID string accountName string
showReposts bool showReposts bool
notify bool notify bool
unfollow bool unfollow bool
@ -25,7 +25,7 @@ func newFollowCommand(name, summary string, unfollow bool) *followCommand {
} }
command.StringVar(&command.resourceType, resourceTypeFlag, "", "specify the type of resource to follow") command.StringVar(&command.resourceType, resourceTypeFlag, "", "specify the type of resource to follow")
command.StringVar(&command.accountID, accountIDFlag, "", "specify the ID of the account you want to follow") command.StringVar(&command.accountName, accountNameFlag, "", "specify the account name in full (username@domain)")
command.BoolVar(&command.showReposts, showRepostsFlag, true, "show reposts from the account you want to follow") command.BoolVar(&command.showReposts, showRepostsFlag, true, "show reposts from the account you want to follow")
command.BoolVar(&command.notify, notifyFlag, false, "get notifications when the account you want to follow posts a status") command.BoolVar(&command.notify, notifyFlag, false, "get notifications when the account you want to follow posts a status")
@ -52,16 +52,17 @@ func (c *followCommand) Execute() error {
return doFunc(gtsClient) return doFunc(gtsClient)
} }
func (c *followCommand) followAccount(gts *client.Client) error { func (c *followCommand) followAccount(gtsClient *client.Client) error {
if c.accountID == "" { accountID, err := getAccountID(gtsClient, false, c.accountName)
return flagNotSetError{flagText: accountIDFlag} if err != nil {
return fmt.Errorf("received an error while getting the account ID; %w", err)
} }
if c.unfollow { if c.unfollow {
return c.unfollowAccount(gts) return c.unfollowAccount(gtsClient, accountID)
} }
if err := gts.FollowAccount(c.accountID, c.showReposts, c.notify); err != nil { if err := gtsClient.FollowAccount(accountID, c.showReposts, c.notify); err != nil {
return fmt.Errorf("unable to follow the account; %w", err) return fmt.Errorf("unable to follow the account; %w", err)
} }
@ -70,8 +71,8 @@ func (c *followCommand) followAccount(gts *client.Client) error {
return nil return nil
} }
func (c *followCommand) unfollowAccount(gts *client.Client) error { func (c *followCommand) unfollowAccount(gtsClient *client.Client, accountID string) error {
if err := gts.UnfollowAccount(c.accountID); err != nil { if err := gtsClient.UnfollowAccount(accountID); err != nil {
return fmt.Errorf("unable to unfollow the account; %w", err) return fmt.Errorf("unable to unfollow the account; %w", err)
} }

View file

@ -4,15 +4,10 @@ import (
"flag" "flag"
"fmt" "fmt"
"os" "os"
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
"codeflow.dananglin.me.uk/apollo/enbas/internal/config"
"codeflow.dananglin.me.uk/apollo/enbas/internal/model"
) )
const ( const (
accountFlag = "account" accountNameFlag = "account-name"
accountIDFlag = "account-id"
addToFlag = "add-to" addToFlag = "add-to"
instanceFlag = "instance" instanceFlag = "instance"
listIDFlag = "list-id" listIDFlag = "list-id"
@ -151,19 +146,3 @@ func run() error {
return nil return nil
} }
func getMyAccount(gts *client.Client) (model.Account, error) {
authConfig, err := config.NewAuthenticationConfigFromFile()
if err != nil {
return model.Account{}, fmt.Errorf("unable to retrieve the authentication configuration; %w", err)
}
accountURI := authConfig.CurrentAccount
account, err := gts.GetAccount(accountURI)
if err != nil {
return model.Account{}, fmt.Errorf("unable to retrieve the account details; %w", err)
}
return account, nil
}

View file

@ -12,7 +12,7 @@ type removeCommand struct {
fromResourceType string fromResourceType string
listID string listID string
accountIDs accountIDs accountNames accountNames
} }
func newRemoveCommand(name, summary string) *removeCommand { func newRemoveCommand(name, summary string) *removeCommand {
@ -20,12 +20,12 @@ func newRemoveCommand(name, summary string) *removeCommand {
command := removeCommand{ command := removeCommand{
FlagSet: flag.NewFlagSet(name, flag.ExitOnError), FlagSet: flag.NewFlagSet(name, flag.ExitOnError),
accountIDs: accountIDs(emptyArr), accountNames: accountNames(emptyArr),
} }
command.StringVar(&command.fromResourceType, removeFromFlag, "", "specify the type of resource to remove from") command.StringVar(&command.fromResourceType, removeFromFlag, "", "specify the type of resource to remove from")
command.StringVar(&command.listID, listIDFlag, "", "the ID of the list to remove from") command.StringVar(&command.listID, listIDFlag, "", "the ID of the list to remove from")
command.Var(&command.accountIDs, accountIDFlag, "the ID of the account to remove from the list") command.Var(&command.accountNames, accountNameFlag, "the name of the account to remove from the resource")
command.Usage = commandUsageFunc(name, summary, command.FlagSet) command.Usage = commandUsageFunc(name, summary, command.FlagSet)
@ -34,7 +34,7 @@ func newRemoveCommand(name, summary string) *removeCommand {
func (c *removeCommand) Execute() error { func (c *removeCommand) Execute() error {
if c.fromResourceType == "" { if c.fromResourceType == "" {
return flagNotSetError{flagText: "remove-from"} return flagNotSetError{flagText: removeFromFlag}
} }
funcMap := map[string]func(*client.Client) error{ funcMap := map[string]func(*client.Client) error{
@ -59,11 +59,21 @@ func (c *removeCommand) removeAccountsFromList(gtsClient *client.Client) error {
return flagNotSetError{flagText: listIDFlag} return flagNotSetError{flagText: listIDFlag}
} }
if len(c.accountIDs) == 0 { if len(c.accountNames) == 0 {
return noAccountIDsSpecifiedError{} return noAccountSpecifiedError{}
} }
if err := gtsClient.RemoveAccountsFromList(c.listID, []string(c.accountIDs)); err != nil { accountIDs := make([]string, len(c.accountNames))
for i := range c.accountNames {
accountID, err := getTheirAccountID(gtsClient, c.accountNames[i])
if err != nil {
return fmt.Errorf("unable to get the account ID for %s, %w", c.accountNames[i], err)
}
accountIDs[i] = accountID
}
if err := gtsClient.RemoveAccountsFromList(c.listID, accountIDs); err != nil {
return fmt.Errorf("unable to remove the accounts from the list; %w", err) return fmt.Errorf("unable to remove the accounts from the list; %w", err)
} }

View file

@ -15,8 +15,7 @@ type showCommand struct {
showAccountRelationship bool showAccountRelationship bool
showUserPreferences bool showUserPreferences bool
resourceType string resourceType string
account string accountName string
accountID string
statusID string statusID string
timelineCategory string timelineCategory string
listID string listID string
@ -33,8 +32,7 @@ func newShowCommand(name, summary string) *showCommand {
command.BoolVar(&command.showAccountRelationship, showAccountRelationshipFlag, false, "show your relationship to the specified account") command.BoolVar(&command.showAccountRelationship, showAccountRelationshipFlag, false, "show your relationship to the specified account")
command.BoolVar(&command.showUserPreferences, showUserPreferencesFlag, false, "show your preferences") command.BoolVar(&command.showUserPreferences, showUserPreferencesFlag, false, "show your preferences")
command.StringVar(&command.resourceType, resourceTypeFlag, "", "specify the type of resource to display") command.StringVar(&command.resourceType, resourceTypeFlag, "", "specify the type of resource to display")
command.StringVar(&command.account, accountFlag, "", "specify the account URI to lookup") command.StringVar(&command.accountName, accountNameFlag, "", "specify the account name in full (username@domain)")
command.StringVar(&command.accountID, accountIDFlag, "", "specify the account ID")
command.StringVar(&command.statusID, statusIDFlag, "", "specify the ID of the status to display") command.StringVar(&command.statusID, statusIDFlag, "", "specify the ID of the status to display")
command.StringVar(&command.timelineCategory, timelineCategoryFlag, "home", "specify the type of timeline to display (valid values are home, public, list and tag)") command.StringVar(&command.timelineCategory, timelineCategoryFlag, "home", "specify the type of timeline to display (valid values are home, public, list and tag)")
command.StringVar(&command.listID, listIDFlag, "", "specify the ID of the list to display") command.StringVar(&command.listID, listIDFlag, "", "specify the ID of the list to display")
@ -75,8 +73,8 @@ func (c *showCommand) Execute() error {
return doFunc(gtsClient) return doFunc(gtsClient)
} }
func (c *showCommand) showInstance(gts *client.Client) error { func (c *showCommand) showInstance(gtsClient *client.Client) error {
instance, err := gts.GetInstance() instance, err := gtsClient.GetInstance()
if err != nil { if err != nil {
return fmt.Errorf("unable to retrieve the instance details; %w", err) return fmt.Errorf("unable to retrieve the instance details; %w", err)
} }
@ -86,34 +84,32 @@ func (c *showCommand) showInstance(gts *client.Client) error {
return nil return nil
} }
func (c *showCommand) showAccount(gts *client.Client) error { func (c *showCommand) showAccount(gtsClient *client.Client) error {
var ( var (
account model.Account account model.Account
err error err error
) )
if c.myAccount { if c.myAccount {
account, err = getMyAccount(gts) account, err = getMyAccount(gtsClient)
if err != nil { if err != nil {
return fmt.Errorf("received an error while getting account details; %w", err) return fmt.Errorf("received an error while getting the account details; %w", err)
} }
} else { } else {
if c.account == "" { if c.accountName == "" {
return flagNotSetError{flagText: accountFlag} return flagNotSetError{flagText: accountNameFlag}
} }
accountURI := c.account account, err = getAccount(gtsClient, c.accountName)
account, err = gts.GetAccount(accountURI)
if err != nil { if err != nil {
return fmt.Errorf("unable to retrieve the account details; %w", err) return fmt.Errorf("received an error while getting the account details; %w", err)
} }
} }
fmt.Println(account) fmt.Println(account)
if !c.myAccount && c.showAccountRelationship { if !c.myAccount && c.showAccountRelationship {
relationship, err := gts.GetAccountRelationship(account.ID) relationship, err := gtsClient.GetAccountRelationship(account.ID)
if err != nil { if err != nil {
return fmt.Errorf("unable to retrieve the relationship to this account; %w", err) return fmt.Errorf("unable to retrieve the relationship to this account; %w", err)
} }
@ -122,7 +118,7 @@ func (c *showCommand) showAccount(gts *client.Client) error {
} }
if c.myAccount && c.showUserPreferences { if c.myAccount && c.showUserPreferences {
preferences, err := gts.GetUserPreferences() preferences, err := gtsClient.GetUserPreferences()
if err != nil { if err != nil {
return fmt.Errorf("unable to retrieve the user preferences; %w", err) return fmt.Errorf("unable to retrieve the user preferences; %w", err)
} }
@ -133,12 +129,12 @@ func (c *showCommand) showAccount(gts *client.Client) error {
return nil return nil
} }
func (c *showCommand) showStatus(gts *client.Client) error { func (c *showCommand) showStatus(gtsClient *client.Client) error {
if c.statusID == "" { if c.statusID == "" {
return flagNotSetError{flagText: statusIDFlag} return flagNotSetError{flagText: statusIDFlag}
} }
status, err := gts.GetStatus(c.statusID) status, err := gtsClient.GetStatus(c.statusID)
if err != nil { if err != nil {
return fmt.Errorf("unable to retrieve the status; %w", err) return fmt.Errorf("unable to retrieve the status; %w", err)
} }
@ -148,7 +144,7 @@ func (c *showCommand) showStatus(gts *client.Client) error {
return nil return nil
} }
func (c *showCommand) showTimeline(gts *client.Client) error { func (c *showCommand) showTimeline(gtsClient *client.Client) error {
var ( var (
timeline model.Timeline timeline model.Timeline
err error err error
@ -156,21 +152,21 @@ func (c *showCommand) showTimeline(gts *client.Client) error {
switch c.timelineCategory { switch c.timelineCategory {
case "home": case "home":
timeline, err = gts.GetHomeTimeline(c.limit) timeline, err = gtsClient.GetHomeTimeline(c.limit)
case "public": case "public":
timeline, err = gts.GetPublicTimeline(c.limit) timeline, err = gtsClient.GetPublicTimeline(c.limit)
case "list": case "list":
if c.listID == "" { if c.listID == "" {
return flagNotSetError{flagText: listIDFlag} return flagNotSetError{flagText: listIDFlag}
} }
timeline, err = gts.GetListTimeline(c.listID, c.limit) timeline, err = gtsClient.GetListTimeline(c.listID, c.limit)
case "tag": case "tag":
if c.tag == "" { if c.tag == "" {
return flagNotSetError{flagText: tagFlag} return flagNotSetError{flagText: tagFlag}
} }
timeline, err = gts.GetTagTimeline(c.tag, c.limit) timeline, err = gtsClient.GetTagTimeline(c.tag, c.limit)
default: default:
return invalidTimelineCategoryError{category: c.timelineCategory} return invalidTimelineCategoryError{category: c.timelineCategory}
} }
@ -190,17 +186,17 @@ func (c *showCommand) showTimeline(gts *client.Client) error {
return nil return nil
} }
func (c *showCommand) showList(gts *client.Client) error { func (c *showCommand) showList(gtsClient *client.Client) error {
if c.listID == "" { if c.listID == "" {
return c.showLists(gts) return c.showLists(gtsClient)
} }
list, err := gts.GetList(c.listID) list, err := gtsClient.GetList(c.listID)
if err != nil { if err != nil {
return fmt.Errorf("unable to retrieve the list; %w", err) return fmt.Errorf("unable to retrieve the list; %w", err)
} }
accounts, err := gts.GetAccountsFromList(c.listID, 0) accounts, err := gtsClient.GetAccountsFromList(c.listID, 0)
if err != nil { if err != nil {
return fmt.Errorf("unable to retrieve the accounts from the list; %w", err) return fmt.Errorf("unable to retrieve the accounts from the list; %w", err)
} }
@ -219,8 +215,8 @@ func (c *showCommand) showList(gts *client.Client) error {
return nil return nil
} }
func (c *showCommand) showLists(gts *client.Client) error { func (c *showCommand) showLists(gtsClient *client.Client) error {
lists, err := gts.GetAllLists() lists, err := gtsClient.GetAllLists()
if err != nil { if err != nil {
return fmt.Errorf("unable to retrieve the lists; %w", err) return fmt.Errorf("unable to retrieve the lists; %w", err)
} }
@ -237,25 +233,13 @@ func (c *showCommand) showLists(gts *client.Client) error {
return nil return nil
} }
func (c *showCommand) showFollowers(gts *client.Client) error { func (c *showCommand) showFollowers(gtsClient *client.Client) error {
var accountID string accountID, err := getAccountID(gtsClient, c.myAccount, c.accountName)
if c.myAccount {
account, err := getMyAccount(gts)
if err != nil { if err != nil {
return fmt.Errorf("received an error while getting account details; %w", err) return fmt.Errorf("received an error while getting the account ID; %w", err)
} }
accountID = account.ID followers, err := gtsClient.GetFollowers(accountID, c.limit)
} else {
if c.accountID == "" {
return flagNotSetError{flagText: accountIDFlag}
}
accountID = c.accountID
}
followers, err := gts.GetFollowers(accountID, c.limit)
if err != nil { if err != nil {
return fmt.Errorf("unable to retrieve the list of followers; %w", err) return fmt.Errorf("unable to retrieve the list of followers; %w", err)
} }
@ -269,25 +253,13 @@ func (c *showCommand) showFollowers(gts *client.Client) error {
return nil return nil
} }
func (c *showCommand) showFollowing(gts *client.Client) error { func (c *showCommand) showFollowing(gtsClient *client.Client) error {
var accountID string accountID, err := getAccountID(gtsClient, c.myAccount, c.accountName)
if c.myAccount {
account, err := getMyAccount(gts)
if err != nil { if err != nil {
return fmt.Errorf("received an error while getting account details; %w", err) return fmt.Errorf("received an error while getting the account ID; %w", err)
} }
accountID = account.ID following, err := gtsClient.GetFollowing(accountID, c.limit)
} else {
if c.accountID == "" {
return flagNotSetError{flagText: accountIDFlag}
}
accountID = c.accountID
}
following, err := gts.GetFollowing(accountID, c.limit)
if err != nil { if err != nil {
return fmt.Errorf("unable to retrieve the list of followed accounts; %w", err) return fmt.Errorf("unable to retrieve the list of followed accounts; %w", err)
} }
@ -301,8 +273,8 @@ func (c *showCommand) showFollowing(gts *client.Client) error {
return nil return nil
} }
func (c *showCommand) showBlocked(gts *client.Client) error { func (c *showCommand) showBlocked(gtsClient *client.Client) error {
blocked, err := gts.GetBlockedAccounts(c.limit) blocked, err := gtsClient.GetBlockedAccounts(c.limit)
if err != nil { if err != nil {
return fmt.Errorf("unable to retrieve the list of blocked accounts; %w", err) return fmt.Errorf("unable to retrieve the list of blocked accounts; %w", err)
} }