refactor: refactor the ListRepliesPolicy enum type
Refactor the ListRepliesPolicy enum type to bring it in line with the others.
This commit is contained in:
parent
ea05294cb5
commit
35575f32de
4 changed files with 50 additions and 35 deletions
|
@ -81,12 +81,12 @@ func (c *CreateExecutor) createList(gtsClient *client.Client) error {
|
|||
return FlagNotSetError{flagText: flagListTitle}
|
||||
}
|
||||
|
||||
repliesPolicy, err := model.ParseListRepliesPolicy(c.listRepliesPolicy)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to parse the list replies policy; %w", err)
|
||||
parsedListRepliesPolicy := model.ParseListRepliesPolicy(c.listRepliesPolicy)
|
||||
if parsedListRepliesPolicy == model.ListRepliesPolicyUnknown {
|
||||
return InvalidListRepliesPolicyError{Policy: c.listRepliesPolicy}
|
||||
}
|
||||
|
||||
list, err := gtsClient.CreateList(c.listTitle, repliesPolicy)
|
||||
list, err := gtsClient.CreateList(c.listTitle, parsedListRepliesPolicy)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to create the list; %w", err)
|
||||
}
|
||||
|
|
|
@ -69,3 +69,11 @@ type InvalidStatusContentTypeError struct {
|
|||
func (e InvalidStatusContentTypeError) Error() string {
|
||||
return "'" + e.ContentType + "' is an invalid status content type (valid values are plain and markdown)"
|
||||
}
|
||||
|
||||
type InvalidListRepliesPolicyError struct {
|
||||
Policy string
|
||||
}
|
||||
|
||||
func (e InvalidListRepliesPolicyError) Error() string {
|
||||
return "'" + e.Policy + "' is an invalid list replies policy"
|
||||
}
|
||||
|
|
|
@ -71,12 +71,12 @@ func (e *EditExecutor) updateList(gtsClient *client.Client) error {
|
|||
}
|
||||
|
||||
if e.listRepliesPolicy != "" {
|
||||
repliesPolicy, err := model.ParseListRepliesPolicy(e.listRepliesPolicy)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to parse the list replies policy; %w", err)
|
||||
parsedListRepliesPolicy := model.ParseListRepliesPolicy(e.listRepliesPolicy)
|
||||
if parsedListRepliesPolicy == model.ListRepliesPolicyUnknown {
|
||||
return InvalidListRepliesPolicyError{Policy: e.listRepliesPolicy}
|
||||
}
|
||||
|
||||
list.RepliesPolicy = repliesPolicy
|
||||
list.RepliesPolicy = parsedListRepliesPolicy
|
||||
}
|
||||
|
||||
updatedList, err := gtsClient.UpdateList(list)
|
||||
|
|
|
@ -2,7 +2,6 @@ package model
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/utilities"
|
||||
|
@ -14,38 +13,49 @@ const (
|
|||
ListRepliesPolicyFollowed ListRepliesPolicy = iota
|
||||
ListRepliesPolicyList
|
||||
ListRepliesPolicyNone
|
||||
ListRepliesPolicyUnknown
|
||||
)
|
||||
|
||||
func ParseListRepliesPolicy(policy string) (ListRepliesPolicy, error) {
|
||||
switch policy {
|
||||
case "followed":
|
||||
return ListRepliesPolicyFollowed, nil
|
||||
case "list":
|
||||
return ListRepliesPolicyList, nil
|
||||
case "none":
|
||||
return ListRepliesPolicyNone, nil
|
||||
}
|
||||
|
||||
return ListRepliesPolicy(-1), fmt.Errorf("%q is not a valid list replies policy", policy)
|
||||
}
|
||||
const (
|
||||
listRepliesPolicyFollowedValue = "followed"
|
||||
listRepliesPolicyListValue = "list"
|
||||
listRepliesPolicyNoneValue = "none"
|
||||
)
|
||||
|
||||
func (l ListRepliesPolicy) String() string {
|
||||
switch l {
|
||||
case ListRepliesPolicyFollowed:
|
||||
return "followed"
|
||||
case ListRepliesPolicyList:
|
||||
return "list"
|
||||
case ListRepliesPolicyNone:
|
||||
return "none"
|
||||
mapped := map[ListRepliesPolicy]string{
|
||||
ListRepliesPolicyFollowed: listRepliesPolicyFollowedValue,
|
||||
ListRepliesPolicyList: listRepliesPolicyListValue,
|
||||
ListRepliesPolicyNone: listRepliesPolicyNoneValue,
|
||||
}
|
||||
|
||||
return ""
|
||||
output, ok := mapped[l]
|
||||
if !ok {
|
||||
return unknownValue
|
||||
}
|
||||
|
||||
return output
|
||||
}
|
||||
|
||||
func ParseListRepliesPolicy(value string) ListRepliesPolicy {
|
||||
mapped := map[string]ListRepliesPolicy{
|
||||
listRepliesPolicyFollowedValue: ListRepliesPolicyFollowed,
|
||||
listRepliesPolicyListValue: ListRepliesPolicyList,
|
||||
listRepliesPolicyNoneValue: ListRepliesPolicyNone,
|
||||
}
|
||||
|
||||
output, ok := mapped[value]
|
||||
if !ok {
|
||||
return ListRepliesPolicyUnknown
|
||||
}
|
||||
|
||||
return output
|
||||
}
|
||||
|
||||
func (l ListRepliesPolicy) MarshalJSON() ([]byte, error) {
|
||||
value := l.String()
|
||||
if value == "" {
|
||||
return nil, errors.New("invalid list replies policy")
|
||||
if value == unknownValue {
|
||||
return nil, fmt.Errorf("%q is not a valid list replies policy")
|
||||
}
|
||||
|
||||
return json.Marshal(value)
|
||||
|
@ -61,10 +71,7 @@ func (l *ListRepliesPolicy) UnmarshalJSON(data []byte) error {
|
|||
return fmt.Errorf("unable to unmarshal the data; %w", err)
|
||||
}
|
||||
|
||||
*l, err = ParseListRepliesPolicy(value)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to parse %s as a list replies policy; %w", value, err)
|
||||
}
|
||||
*l = ParseListRepliesPolicy(value)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue