checkpoint: moved InvalidStatusVisibilityError to model package
This commit is contained in:
parent
d61160f740
commit
d660081f3e
4 changed files with 31 additions and 19 deletions
|
@ -168,9 +168,9 @@ func (c *CreateExecutor) createStatus(gtsClient *client.Client) error {
|
||||||
sensitive = preferences.PostingDefaultSensitive
|
sensitive = preferences.PostingDefaultSensitive
|
||||||
}
|
}
|
||||||
|
|
||||||
parsedVisibility := model.ParseStatusVisibility(visibility)
|
parsedVisibility, err := model.ParseStatusVisibility(visibility)
|
||||||
if parsedVisibility == model.StatusVisibilityUnknown {
|
if err != nil {
|
||||||
return InvalidStatusVisibilityError{Visibility: visibility}
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
parsedContentType := model.ParseStatusContentType(c.contentType)
|
parsedContentType := model.ParseStatusContentType(c.contentType)
|
||||||
|
|
|
@ -59,14 +59,6 @@ func (e EmptyContentError) Error() string {
|
||||||
return message
|
return message
|
||||||
}
|
}
|
||||||
|
|
||||||
type InvalidStatusVisibilityError struct {
|
|
||||||
Visibility string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e InvalidStatusVisibilityError) Error() string {
|
|
||||||
return "'" + e.Visibility + "' is an invalid status visibility (valid values are public, unlisted, private, mutuals_only and direct)"
|
|
||||||
}
|
|
||||||
|
|
||||||
type InvalidStatusContentTypeError struct {
|
type InvalidStatusContentTypeError struct {
|
||||||
ContentType string
|
ContentType string
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,7 +77,7 @@ func (l *ListRepliesPolicy) UnmarshalJSON(data []byte) error {
|
||||||
)
|
)
|
||||||
|
|
||||||
if err = json.Unmarshal(data, &value); err != nil {
|
if err = json.Unmarshal(data, &value); err != nil {
|
||||||
return fmt.Errorf("unable to unmarshal the data; %w", err)
|
return fmt.Errorf("unable to decode the JSON data; %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
*l, err = ParseListRepliesPolicy(value)
|
*l, err = ParseListRepliesPolicy(value)
|
||||||
|
|
|
@ -45,7 +45,7 @@ func (s StatusVisibility) String() string {
|
||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
|
|
||||||
func ParseStatusVisibility(value string) StatusVisibility {
|
func ParseStatusVisibility(value string) (StatusVisibility, error) {
|
||||||
mapped := map[string]StatusVisibility{
|
mapped := map[string]StatusVisibility{
|
||||||
statusVisibilityPublicValue: StatusVisibilityPublic,
|
statusVisibilityPublicValue: StatusVisibilityPublic,
|
||||||
statusVisibilityPrivateValue: StatusVisibilityPrivate,
|
statusVisibilityPrivateValue: StatusVisibilityPrivate,
|
||||||
|
@ -56,19 +56,24 @@ func ParseStatusVisibility(value string) StatusVisibility {
|
||||||
|
|
||||||
output, ok := mapped[value]
|
output, ok := mapped[value]
|
||||||
if !ok {
|
if !ok {
|
||||||
return StatusVisibilityUnknown
|
return StatusVisibilityUnknown, InvalidStatusVisibilityError{Value: value}
|
||||||
}
|
}
|
||||||
|
|
||||||
return output
|
return output, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s StatusVisibility) MarshalJSON() ([]byte, error) {
|
func (s StatusVisibility) MarshalJSON() ([]byte, error) {
|
||||||
value := s.String()
|
value := s.String()
|
||||||
if value == unknownValue {
|
if value == unknownValue {
|
||||||
return nil, fmt.Errorf("%q is not a valid status visibility", value)
|
return nil, InvalidStatusVisibilityError{Value: value}
|
||||||
}
|
}
|
||||||
|
|
||||||
return json.Marshal(value)
|
data, err := json.Marshal(value)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("unable to encode %s to JSON: %w", value, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StatusVisibility) UnmarshalJSON(data []byte) error {
|
func (s *StatusVisibility) UnmarshalJSON(data []byte) error {
|
||||||
|
@ -78,10 +83,25 @@ func (s *StatusVisibility) UnmarshalJSON(data []byte) error {
|
||||||
)
|
)
|
||||||
|
|
||||||
if err = json.Unmarshal(data, &value); err != nil {
|
if err = json.Unmarshal(data, &value); err != nil {
|
||||||
return fmt.Errorf("unable to unmarshal the data; %w", err)
|
return fmt.Errorf("unable to decode the JSON data; %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
*s = ParseStatusVisibility(value)
|
// Ignore the error if the visibility from another service is
|
||||||
|
// not known by enbas. It will be replaced with 'unknown'.
|
||||||
|
*s, _ = ParseStatusVisibility(value)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type InvalidStatusVisibilityError struct {
|
||||||
|
Value string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e InvalidStatusVisibilityError) Error() string {
|
||||||
|
return "'" + e.Value + "' is not a valid status visibility value (valid values are " +
|
||||||
|
statusVisibilityPublicValue + ", " +
|
||||||
|
statusVisibilityUnlistedValue + ", " +
|
||||||
|
statusVisibilityPrivateValue + ", " +
|
||||||
|
statusVisibilityMutualsOnlyValue + ", " +
|
||||||
|
statusVisibilityDirectValue + ")"
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue