checkpoint: receive an display relationship to an account
This commit is contained in:
parent
b1240c42f7
commit
4d0522eb49
3 changed files with 106 additions and 8 deletions
|
@ -13,6 +13,7 @@ import (
|
|||
type showCommand struct {
|
||||
*flag.FlagSet
|
||||
myAccount bool
|
||||
showAccountRelationship bool
|
||||
resourceType string
|
||||
account string
|
||||
statusID string
|
||||
|
@ -28,6 +29,7 @@ func newShowCommand(name, summary string) *showCommand {
|
|||
}
|
||||
|
||||
command.BoolVar(&command.myAccount, myAccountFlag, false, "set to true to lookup your account")
|
||||
command.BoolVar(&command.showAccountRelationship, "show-account-relationship", false, "show your relationship to the specified account")
|
||||
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.statusID, statusIDFlag, "", "specify the ID of the status to display")
|
||||
|
@ -103,6 +105,15 @@ func (c *showCommand) showAccount(gts *client.Client) error {
|
|||
|
||||
fmt.Println(account)
|
||||
|
||||
if c.showAccountRelationship {
|
||||
relationship, err := gts.GetAccountRelationship(account.ID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to retrieve the relationship to this account; %w", err)
|
||||
}
|
||||
|
||||
fmt.Println(relationship)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -32,3 +32,20 @@ func (g *Client) GetAccount(accountURI string) (model.Account, error) {
|
|||
|
||||
return account, nil
|
||||
}
|
||||
|
||||
func (g *Client) GetAccountRelationship(accountID string) (model.AccountRelationship, error) {
|
||||
path := "/api/v1/accounts/relationships?id=" + accountID
|
||||
url := g.Authentication.Instance + path
|
||||
|
||||
var relationships []model.AccountRelationship
|
||||
|
||||
if err := g.sendRequest(http.MethodGet, url, nil, &relationships); err != nil {
|
||||
return model.AccountRelationship{}, fmt.Errorf("received an error after sending the request to get the account relationship; %w", err)
|
||||
}
|
||||
|
||||
if len(relationships) != 1 {
|
||||
return model.AccountRelationship{}, fmt.Errorf("unexpected number of account relationships returned; want 1, got %d", len(relationships))
|
||||
}
|
||||
|
||||
return relationships[0], nil
|
||||
}
|
||||
|
|
70
internal/model/account_relationship.go
Normal file
70
internal/model/account_relationship.go
Normal file
|
@ -0,0 +1,70 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/utilities"
|
||||
)
|
||||
|
||||
type AccountRelationship struct {
|
||||
ID string `json:"id"`
|
||||
PrivateNote string `json:"note"`
|
||||
BlockedBy bool `json:"blocked_by"`
|
||||
Blocking bool `json:"blocking"`
|
||||
DomainBlocking bool `json:"domain_blocking"`
|
||||
Endorsed bool `json:"endorsed"`
|
||||
FollowedBy bool `json:"followed_by"`
|
||||
Following bool `json:"following"`
|
||||
Muting bool `json:"muting"`
|
||||
MutingNotifications bool `json:"muting_notifications"`
|
||||
Notifying bool `json:"notifying"`
|
||||
FollowRequested bool `json:"requested"`
|
||||
FollowRequestedBy bool `json:"requested_by"`
|
||||
ShowingReblogs bool `json:"showing_reblogs"`
|
||||
}
|
||||
|
||||
func (a AccountRelationship) String() string {
|
||||
format := `
|
||||
%s
|
||||
%s: %t
|
||||
%s: %t
|
||||
%s: %t
|
||||
%s: %t
|
||||
%s: %t
|
||||
%s: %t
|
||||
%s: %t
|
||||
%s: %t
|
||||
%s: %t
|
||||
%s: %t
|
||||
%s: %t`
|
||||
|
||||
privateNoteFormat := `
|
||||
%s
|
||||
%s`
|
||||
|
||||
output := fmt.Sprintf(
|
||||
format,
|
||||
utilities.HeaderFormat("YOUR RELATIONSHIP TO THIS ACCOUNT:"),
|
||||
utilities.FieldFormat("Following"), a.Following,
|
||||
utilities.FieldFormat("Is following you"), a.FollowedBy,
|
||||
utilities.FieldFormat("A follow request was sent and is pending"), a.FollowRequested,
|
||||
utilities.FieldFormat("Received a pending follow request"), a.FollowRequestedBy,
|
||||
utilities.FieldFormat("Endorsed"), a.Endorsed,
|
||||
utilities.FieldFormat("Showing Reposts (boosts)"), a.ShowingReblogs,
|
||||
utilities.FieldFormat("Muted"), a.Muting,
|
||||
utilities.FieldFormat("Notifications muted"), a.MutingNotifications,
|
||||
utilities.FieldFormat("Blocking"), a.Blocking,
|
||||
utilities.FieldFormat("Is blocking you"), a.BlockedBy,
|
||||
utilities.FieldFormat("Blocking account's domain"), a.DomainBlocking,
|
||||
)
|
||||
|
||||
if a.PrivateNote != "" {
|
||||
output += fmt.Sprintf(
|
||||
privateNoteFormat,
|
||||
utilities.HeaderFormat("YOUR PRIVATE NOTE ABOUT THIS ACCOUNT:"),
|
||||
utilities.WrapLines(a.PrivateNote, "\n ", 80),
|
||||
)
|
||||
}
|
||||
|
||||
return output
|
||||
}
|
Loading…
Reference in a new issue