checkpoint: cleaning up the errors
This commit is contained in:
parent
39d9ef1a38
commit
055f5e1df0
12 changed files with 106 additions and 108 deletions
|
@ -30,3 +30,11 @@ func (e ResponseError) Error() string {
|
||||||
e.Message,
|
e.Message,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Error struct {
|
||||||
|
message string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e Error) Error() string {
|
||||||
|
return e.message
|
||||||
|
}
|
||||||
|
|
|
@ -3,15 +3,12 @@ package client
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"codeflow.dananglin.me.uk/apollo/enbas/internal"
|
"codeflow.dananglin.me.uk/apollo/enbas/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
var errEmptyAccessToken = errors.New("received an empty access token")
|
|
||||||
|
|
||||||
type tokenRequest struct {
|
type tokenRequest struct {
|
||||||
RedirectURI string `json:"redirect_uri"`
|
RedirectURI string `json:"redirect_uri"`
|
||||||
ClientID string `json:"client_id"`
|
ClientID string `json:"client_id"`
|
||||||
|
@ -59,7 +56,7 @@ func (g *Client) UpdateToken(code string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if response.AccessToken == "" {
|
if response.AccessToken == "" {
|
||||||
return errEmptyAccessToken
|
return Error{"received an empty access token"}
|
||||||
}
|
}
|
||||||
|
|
||||||
g.Authentication.AccessToken = response.AccessToken
|
g.Authentication.AccessToken = response.AccessToken
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package executor
|
package executor
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
|
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
|
||||||
|
@ -40,8 +39,8 @@ func (a *AddExecutor) addToList(gtsClient *client.Client) error {
|
||||||
doFunc, ok := funcMap[a.resourceType]
|
doFunc, ok := funcMap[a.resourceType]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnsupportedAddOperationError{
|
return UnsupportedAddOperationError{
|
||||||
ResourceType: a.resourceType,
|
resourceType: a.resourceType,
|
||||||
AddToResourceType: a.toResourceType,
|
addToResourceType: a.toResourceType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +70,7 @@ func (a *AddExecutor) addAccountsToList(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !relationship.Following {
|
if !relationship.Following {
|
||||||
return NotFollowingError{Account: accounts[ind].Acct}
|
return NotFollowingError{account: accounts[ind].Acct}
|
||||||
}
|
}
|
||||||
|
|
||||||
accountIDs[ind] = accounts[ind].ID
|
accountIDs[ind] = accounts[ind].ID
|
||||||
|
@ -94,8 +93,8 @@ func (a *AddExecutor) addToAccount(gtsClient *client.Client) error {
|
||||||
doFunc, ok := funcMap[a.resourceType]
|
doFunc, ok := funcMap[a.resourceType]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnsupportedAddOperationError{
|
return UnsupportedAddOperationError{
|
||||||
ResourceType: a.resourceType,
|
resourceType: a.resourceType,
|
||||||
AddToResourceType: a.toResourceType,
|
addToResourceType: a.toResourceType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +108,7 @@ func (a *AddExecutor) addNoteToAccount(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if a.content == "" {
|
if a.content == "" {
|
||||||
return errors.New("please add content to the status that you want to create")
|
return Error{"please add content to the note you want to add"}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := gtsClient.SetPrivateNote(accountID, a.content); err != nil {
|
if err := gtsClient.SetPrivateNote(accountID, a.content); err != nil {
|
||||||
|
@ -129,8 +128,8 @@ func (a *AddExecutor) addToBookmarks(gtsClient *client.Client) error {
|
||||||
doFunc, ok := funcMap[a.resourceType]
|
doFunc, ok := funcMap[a.resourceType]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnsupportedAddOperationError{
|
return UnsupportedAddOperationError{
|
||||||
ResourceType: a.resourceType,
|
resourceType: a.resourceType,
|
||||||
AddToResourceType: a.toResourceType,
|
addToResourceType: a.toResourceType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,8 +165,8 @@ func (a *AddExecutor) addToStatus(gtsClient *client.Client) error {
|
||||||
doFunc, ok := funcMap[a.resourceType]
|
doFunc, ok := funcMap[a.resourceType]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnsupportedAddOperationError{
|
return UnsupportedAddOperationError{
|
||||||
ResourceType: a.resourceType,
|
resourceType: a.resourceType,
|
||||||
AddToResourceType: a.toResourceType,
|
addToResourceType: a.toResourceType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,7 +195,7 @@ func (a *AddExecutor) addBoostToStatus(gtsClient *client.Client) error {
|
||||||
|
|
||||||
func (a *AddExecutor) addVoteToStatus(gtsClient *client.Client) error {
|
func (a *AddExecutor) addVoteToStatus(gtsClient *client.Client) error {
|
||||||
if a.votes.Empty() {
|
if a.votes.Empty() {
|
||||||
return NoVotesError{}
|
return Error{"please add your vote(s) to the poll"}
|
||||||
}
|
}
|
||||||
|
|
||||||
status, err := gtsClient.GetStatus(a.statusID)
|
status, err := gtsClient.GetStatus(a.statusID)
|
||||||
|
@ -205,15 +204,15 @@ func (a *AddExecutor) addVoteToStatus(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if status.Poll == nil {
|
if status.Poll == nil {
|
||||||
return NoPollInStatusError{}
|
return Error{"this status does not have a poll"}
|
||||||
}
|
}
|
||||||
|
|
||||||
if status.Poll.Expired {
|
if status.Poll.Expired {
|
||||||
return PollClosedError{}
|
return Error{"this poll is closed"}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !status.Poll.Multiple && !a.votes.ExpectedLength(1) {
|
if !status.Poll.Multiple && !a.votes.ExpectedLength(1) {
|
||||||
return MultipleChoiceError{}
|
return Error{"this poll does not allow multiple choices"}
|
||||||
}
|
}
|
||||||
|
|
||||||
myAccountID, err := getAccountID(gtsClient, true, nil)
|
myAccountID, err := getAccountID(gtsClient, true, nil)
|
||||||
|
@ -222,7 +221,7 @@ func (a *AddExecutor) addVoteToStatus(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if status.Account.ID == myAccountID {
|
if status.Account.ID == myAccountID {
|
||||||
return PollOwnerVoteError{}
|
return Error{"you cannot vote in your own poll"}
|
||||||
}
|
}
|
||||||
|
|
||||||
pollID := status.Poll.ID
|
pollID := status.Poll.ID
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package executor
|
package executor
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
|
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
|
||||||
|
@ -72,27 +71,35 @@ func (c *CreateExecutor) createStatus(gtsClient *client.Client) error {
|
||||||
if !c.mediaFiles.Empty() {
|
if !c.mediaFiles.Empty() {
|
||||||
descriptionsExists := false
|
descriptionsExists := false
|
||||||
focusValuesExists := false
|
focusValuesExists := false
|
||||||
expectedLength := len(c.mediaFiles)
|
numMediaFiles := len(c.mediaFiles)
|
||||||
mediaDescriptions := make([]string, expectedLength)
|
mediaDescriptions := make([]string, numMediaFiles)
|
||||||
|
|
||||||
if !c.mediaDescriptions.Empty() {
|
if !c.mediaDescriptions.Empty() {
|
||||||
descriptionsExists = true
|
descriptionsExists = true
|
||||||
|
|
||||||
if !c.mediaDescriptions.ExpectedLength(expectedLength) {
|
if !c.mediaDescriptions.ExpectedLength(numMediaFiles) {
|
||||||
return errors.New("the number of media descriptions does not match the number of media files")
|
return MismatchedNumMediaArgs{
|
||||||
|
argType: "media descriptions",
|
||||||
|
numArgs: len(c.mediaDescriptions),
|
||||||
|
numMediaFiles: numMediaFiles,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !c.mediaFocusValues.Empty() {
|
if !c.mediaFocusValues.Empty() {
|
||||||
focusValuesExists = true
|
focusValuesExists = true
|
||||||
|
|
||||||
if !c.mediaFocusValues.ExpectedLength(expectedLength) {
|
if !c.mediaFocusValues.ExpectedLength(numMediaFiles) {
|
||||||
return errors.New("the number of media focus values does not match the number of media files")
|
return MismatchedNumMediaArgs{
|
||||||
|
argType: "media focus values",
|
||||||
|
numArgs: len(c.mediaFocusValues),
|
||||||
|
numMediaFiles: numMediaFiles,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if descriptionsExists {
|
if descriptionsExists {
|
||||||
for ind := 0; ind < expectedLength; ind++ {
|
for ind := 0; ind < numMediaFiles; ind++ {
|
||||||
mediaDesc, err := utilities.ReadContents(c.mediaDescriptions[ind])
|
mediaDesc, err := utilities.ReadContents(c.mediaDescriptions[ind])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to read the contents from %s: %w", c.mediaDescriptions[ind], err)
|
return fmt.Errorf("unable to read the contents from %s: %w", c.mediaDescriptions[ind], err)
|
||||||
|
@ -102,7 +109,7 @@ func (c *CreateExecutor) createStatus(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ind := 0; ind < expectedLength; ind++ {
|
for ind := 0; ind < numMediaFiles; ind++ {
|
||||||
var (
|
var (
|
||||||
mediaFile string
|
mediaFile string
|
||||||
description string
|
description string
|
||||||
|
@ -133,7 +140,7 @@ func (c *CreateExecutor) createStatus(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.content == "" && len(attachmentIDs) == 0 {
|
if c.content == "" && len(attachmentIDs) == 0 {
|
||||||
return errors.New("please add content to the status that you want to create")
|
return Error{"please add content to the status that you want to create"}
|
||||||
}
|
}
|
||||||
|
|
||||||
content, err := utilities.ReadContents(c.content)
|
content, err := utilities.ReadContents(c.content)
|
||||||
|
@ -144,7 +151,7 @@ func (c *CreateExecutor) createStatus(gtsClient *client.Client) error {
|
||||||
numAttachmentIDs := len(attachmentIDs)
|
numAttachmentIDs := len(attachmentIDs)
|
||||||
|
|
||||||
if c.addPoll && numAttachmentIDs > 0 {
|
if c.addPoll && numAttachmentIDs > 0 {
|
||||||
return fmt.Errorf("attaching media to a poll is not allowed")
|
return Error{"attaching media to a poll is not allowed"}
|
||||||
}
|
}
|
||||||
|
|
||||||
preferences, err := gtsClient.GetUserPreferences()
|
preferences, err := gtsClient.GetUserPreferences()
|
||||||
|
@ -202,7 +209,7 @@ func (c *CreateExecutor) createStatus(gtsClient *client.Client) error {
|
||||||
|
|
||||||
if c.addPoll {
|
if c.addPoll {
|
||||||
if len(c.pollOptions) == 0 {
|
if len(c.pollOptions) == 0 {
|
||||||
return NoPollOptionError{}
|
return Error{"no options were provided for this poll"}
|
||||||
}
|
}
|
||||||
|
|
||||||
poll := client.CreateStatusPollForm{
|
poll := client.CreateStatusPollForm{
|
||||||
|
@ -244,11 +251,13 @@ func (c *CreateExecutor) createMediaAttachment(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
description, err = utilities.ReadContents(c.mediaDescriptions[0])
|
description, err = utilities.ReadContents(c.mediaDescriptions[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf(
|
return fmt.Errorf(
|
||||||
"unable to read the contents from %s: %w",
|
"unable to read the contents from %s: %w",
|
||||||
c.mediaDescriptions[0],
|
c.mediaDescriptions[0],
|
||||||
|
err,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -261,6 +270,7 @@ func (c *CreateExecutor) createMediaAttachment(gtsClient *client.Client) error {
|
||||||
expectedNumValues,
|
expectedNumValues,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
focus = c.mediaFocusValues[0]
|
focus = c.mediaFocusValues[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package executor
|
package executor
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
|
@ -62,7 +61,7 @@ func (d *DeleteExecutor) deleteStatus(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if status.Account.ID != myAccountID {
|
if status.Account.ID != myAccountID {
|
||||||
return errors.New("unable to delete the status because the status does not belong to you")
|
return Error{"unable to delete the status because the status does not belong to you"}
|
||||||
}
|
}
|
||||||
|
|
||||||
text, err := gtsClient.DeleteStatus(d.statusID)
|
text, err := gtsClient.DeleteStatus(d.statusID)
|
||||||
|
|
|
@ -1,5 +1,15 @@
|
||||||
package executor
|
package executor
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
type Error struct {
|
||||||
|
message string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e Error) Error() string {
|
||||||
|
return e.message
|
||||||
|
}
|
||||||
|
|
||||||
type FlagNotSetError struct {
|
type FlagNotSetError struct {
|
||||||
flagText string
|
flagText string
|
||||||
}
|
}
|
||||||
|
@ -23,94 +33,72 @@ func (e NoAccountSpecifiedError) Error() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
type UnsupportedAddOperationError struct {
|
type UnsupportedAddOperationError struct {
|
||||||
ResourceType string
|
resourceType string
|
||||||
AddToResourceType string
|
addToResourceType string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e UnsupportedAddOperationError) Error() string {
|
func (e UnsupportedAddOperationError) Error() string {
|
||||||
return "adding '" +
|
return "adding '" +
|
||||||
e.ResourceType +
|
e.resourceType +
|
||||||
"' to '" +
|
"' to '" +
|
||||||
e.AddToResourceType +
|
e.addToResourceType +
|
||||||
"' is not supported"
|
"' is not supported"
|
||||||
}
|
}
|
||||||
|
|
||||||
type UnsupportedRemoveOperationError struct {
|
type UnsupportedRemoveOperationError struct {
|
||||||
ResourceType string
|
resourceType string
|
||||||
RemoveFromResourceType string
|
removeFromResourceType string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e UnsupportedRemoveOperationError) Error() string {
|
func (e UnsupportedRemoveOperationError) Error() string {
|
||||||
return "removing '" +
|
return "removing '" +
|
||||||
e.ResourceType +
|
e.resourceType +
|
||||||
"' from '" +
|
"' from '" +
|
||||||
e.RemoveFromResourceType +
|
e.removeFromResourceType +
|
||||||
"' is not supported"
|
"' is not supported"
|
||||||
}
|
}
|
||||||
|
|
||||||
type UnsupportedShowOperationError struct {
|
type UnsupportedShowOperationError struct {
|
||||||
ResourceType string
|
resourceType string
|
||||||
ShowFromResourceType string
|
showFromResourceType string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e UnsupportedShowOperationError) Error() string {
|
func (e UnsupportedShowOperationError) Error() string {
|
||||||
return "showing '" +
|
return "showing '" +
|
||||||
e.ResourceType +
|
e.resourceType +
|
||||||
"' from '" +
|
"' from '" +
|
||||||
e.ShowFromResourceType +
|
e.showFromResourceType +
|
||||||
"' is not supported"
|
"' is not supported"
|
||||||
}
|
}
|
||||||
|
|
||||||
type UnknownCommandError struct {
|
type UnknownCommandError struct {
|
||||||
Command string
|
command string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e UnknownCommandError) Error() string {
|
func (e UnknownCommandError) Error() string {
|
||||||
return "unknown command '" + e.Command + "'"
|
return "unknown command '" + e.command + "'"
|
||||||
}
|
|
||||||
|
|
||||||
type PollClosedError struct{}
|
|
||||||
|
|
||||||
func (e PollClosedError) Error() string {
|
|
||||||
return "this poll is closed"
|
|
||||||
}
|
|
||||||
|
|
||||||
type MultipleChoiceError struct{}
|
|
||||||
|
|
||||||
func (e MultipleChoiceError) Error() string {
|
|
||||||
return "this poll does not allow multiple choices"
|
|
||||||
}
|
|
||||||
|
|
||||||
type NoPollOptionError struct{}
|
|
||||||
|
|
||||||
func (e NoPollOptionError) Error() string {
|
|
||||||
return "no options were provided for this poll, please use the --" +
|
|
||||||
flagPollOption +
|
|
||||||
" flag to add options to the poll"
|
|
||||||
}
|
|
||||||
|
|
||||||
type NoVotesError struct{}
|
|
||||||
|
|
||||||
func (e NoVotesError) Error() string {
|
|
||||||
return "no votes were made, please add your vote(s) using the --vote flag"
|
|
||||||
}
|
|
||||||
|
|
||||||
type NoPollInStatusError struct{}
|
|
||||||
|
|
||||||
func (e NoPollInStatusError) Error() string {
|
|
||||||
return "this status does not have a poll"
|
|
||||||
}
|
|
||||||
|
|
||||||
type PollOwnerVoteError struct{}
|
|
||||||
|
|
||||||
func (e PollOwnerVoteError) Error() string {
|
|
||||||
return "you cannot vote in your own poll"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type NotFollowingError struct {
|
type NotFollowingError struct {
|
||||||
Account string
|
account string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e NotFollowingError) Error() string {
|
func (e NotFollowingError) Error() string {
|
||||||
return "you are not following " + e.Account
|
return "you are not following " + e.account
|
||||||
|
}
|
||||||
|
|
||||||
|
type MismatchedNumMediaArgs struct {
|
||||||
|
argType string
|
||||||
|
numArgs int
|
||||||
|
numMediaFiles int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e MismatchedNumMediaArgs) Error() string {
|
||||||
|
return fmt.Sprintf(
|
||||||
|
"unexpected number of %s: received %d media files but got %d %s",
|
||||||
|
e.argType,
|
||||||
|
e.numMediaFiles,
|
||||||
|
e.numArgs,
|
||||||
|
e.argType,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,7 +145,7 @@ func execute(
|
||||||
|
|
||||||
exe, ok := executorMap[command]
|
exe, ok := executorMap[command]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnknownCommandError{Command: command}
|
return UnknownCommandError{command: command}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := exe.Parse(args); err != nil {
|
if err := exe.Parse(args); err != nil {
|
||||||
|
|
|
@ -7,7 +7,6 @@ const (
|
||||||
flagInstance = "instance"
|
flagInstance = "instance"
|
||||||
flagListID = "list-id"
|
flagListID = "list-id"
|
||||||
flagListTitle = "list-title"
|
flagListTitle = "list-title"
|
||||||
flagPollOption = "poll-option"
|
|
||||||
flagStatusID = "status-id"
|
flagStatusID = "status-id"
|
||||||
flagTag = "tag"
|
flagTag = "tag"
|
||||||
flagTo = "to"
|
flagTo = "to"
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package executor
|
package executor
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
|
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
|
||||||
|
@ -75,7 +74,7 @@ func (m *MuteExecutor) muteStatus(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !canMute {
|
if !canMute {
|
||||||
return errors.New("unable to mute the status because you are not the owner and you are not mentioned in it")
|
return Error{"unable to mute the status because you are not the owner and you are not mentioned in it"}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := gtsClient.MuteStatus(m.statusID); err != nil {
|
if err := gtsClient.MuteStatus(m.statusID); err != nil {
|
||||||
|
|
|
@ -39,8 +39,8 @@ func (r *RemoveExecutor) removeFromList(gtsClient *client.Client) error {
|
||||||
doFunc, ok := funcMap[r.resourceType]
|
doFunc, ok := funcMap[r.resourceType]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnsupportedRemoveOperationError{
|
return UnsupportedRemoveOperationError{
|
||||||
ResourceType: r.resourceType,
|
resourceType: r.resourceType,
|
||||||
RemoveFromResourceType: r.fromResourceType,
|
removeFromResourceType: r.fromResourceType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,8 +84,8 @@ func (r *RemoveExecutor) removeFromAccount(gtsClient *client.Client) error {
|
||||||
doFunc, ok := funcMap[r.resourceType]
|
doFunc, ok := funcMap[r.resourceType]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnsupportedRemoveOperationError{
|
return UnsupportedRemoveOperationError{
|
||||||
ResourceType: r.resourceType,
|
resourceType: r.resourceType,
|
||||||
RemoveFromResourceType: r.fromResourceType,
|
removeFromResourceType: r.fromResourceType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,8 +115,8 @@ func (r *RemoveExecutor) removeFromBookmarks(gtsClient *client.Client) error {
|
||||||
doFunc, ok := funcMap[r.resourceType]
|
doFunc, ok := funcMap[r.resourceType]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnsupportedRemoveOperationError{
|
return UnsupportedRemoveOperationError{
|
||||||
ResourceType: r.resourceType,
|
resourceType: r.resourceType,
|
||||||
RemoveFromResourceType: r.fromResourceType,
|
removeFromResourceType: r.fromResourceType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,8 +151,8 @@ func (r *RemoveExecutor) removeFromStatus(gtsClient *client.Client) error {
|
||||||
doFunc, ok := funcMap[r.resourceType]
|
doFunc, ok := funcMap[r.resourceType]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnsupportedRemoveOperationError{
|
return UnsupportedRemoveOperationError{
|
||||||
ResourceType: r.resourceType,
|
resourceType: r.resourceType,
|
||||||
RemoveFromResourceType: r.fromResourceType,
|
removeFromResourceType: r.fromResourceType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -257,8 +257,8 @@ func (s *ShowExecutor) showFollowers(gtsClient *client.Client) error {
|
||||||
doFunc, ok := funcMap[s.fromResourceType]
|
doFunc, ok := funcMap[s.fromResourceType]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnsupportedShowOperationError{
|
return UnsupportedShowOperationError{
|
||||||
ResourceType: s.resourceType,
|
resourceType: s.resourceType,
|
||||||
ShowFromResourceType: s.fromResourceType,
|
showFromResourceType: s.fromResourceType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -297,8 +297,8 @@ func (s *ShowExecutor) showFollowing(gtsClient *client.Client) error {
|
||||||
doFunc, ok := funcMap[s.fromResourceType]
|
doFunc, ok := funcMap[s.fromResourceType]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnsupportedShowOperationError{
|
return UnsupportedShowOperationError{
|
||||||
ResourceType: s.resourceType,
|
resourceType: s.resourceType,
|
||||||
ShowFromResourceType: s.fromResourceType,
|
showFromResourceType: s.fromResourceType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,8 +444,8 @@ func (s *ShowExecutor) showMedia(gtsClient *client.Client) error {
|
||||||
doFunc, ok := funcMap[s.fromResourceType]
|
doFunc, ok := funcMap[s.fromResourceType]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnsupportedShowOperationError{
|
return UnsupportedShowOperationError{
|
||||||
ResourceType: s.resourceType,
|
resourceType: s.resourceType,
|
||||||
ShowFromResourceType: s.fromResourceType,
|
showFromResourceType: s.fromResourceType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package executor
|
package executor
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
|
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
|
||||||
|
@ -70,7 +69,7 @@ func (m *UnmuteExecutor) unmuteStatus(gtsClient *client.Client) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !canUnmute {
|
if !canUnmute {
|
||||||
return errors.New("unable to unmute the status because you are not the owner and you are not mentioned in it")
|
return Error{"unable to unmute the status because you are not the owner and you are not mentioned in it"}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := gtsClient.UnmuteStatus(m.statusID); err != nil {
|
if err := gtsClient.UnmuteStatus(m.statusID); err != nil {
|
||||||
|
|
Loading…
Reference in a new issue