diff --git a/discord/guild_const.go b/discord/guild_const.go index af1ee4e..eb17b3c 100644 --- a/discord/guild_const.go +++ b/discord/guild_const.go @@ -1,7 +1,7 @@ package discord import ( - "github.com/diamondburned/arikawa/utils/json/nullable" + "github.com/diamondburned/arikawa/utils/json/enum" ) // Guild.MaxPresences is 5000 when it's 0. @@ -54,12 +54,12 @@ const ( ) // ExplicitFilter is the explicit content filter level of a guild. -type ExplicitFilter nullable.Enum +type ExplicitFilter enum.Enum var ( // NullExplicitFilter serialized to JSON null. // This should only be used on nullable fields. - NullExplicitFilter ExplicitFilter = nullable.EnumNull + NullExplicitFilter ExplicitFilter = enum.Null // NoContentFilter disables content filtering for the guild. NoContentFilter ExplicitFilter = 0 // MembersWithoutRoles filters only members without roles. @@ -69,23 +69,23 @@ var ( ) func (f *ExplicitFilter) UnmarshalJSON(b []byte) error { - i, err := nullable.EnumFromJSON(b) + i, err := enum.FromJSON(b) *f = ExplicitFilter(i) return err } func (f ExplicitFilter) MarshalJSON() ([]byte, error) { - return nullable.EnumToJSON(nullable.Enum(f)), nil + return enum.ToJSON(enum.Enum(f)), nil } // Notification is the default message notification level of a guild. -type Notification nullable.Enum +type Notification enum.Enum var ( // NullNotification serialized to JSON null. // This should only be used on nullable fields. - NullNotification Notification = nullable.EnumNull + NullNotification Notification = enum.Null // AllMessages sends notifications for all messages. AllMessages Notification = 0 // OnlyMentions sends notifications only on mention. @@ -93,21 +93,21 @@ var ( ) func (n *Notification) UnmarshalJSON(b []byte) error { - i, err := nullable.EnumFromJSON(b) + i, err := enum.FromJSON(b) *n = Notification(i) return err } -func (n Notification) MarshalJSON() ([]byte, error) { return nullable.EnumToJSON(nullable.Enum(n)), nil } +func (n Notification) MarshalJSON() ([]byte, error) { return enum.ToJSON(enum.Enum(n)), nil } // Verification is the verification level required for a guild. -type Verification nullable.Enum +type Verification enum.Enum var ( // NullVerification serialized to JSON null. // This should only be used on nullable fields. - NullVerification Verification = nullable.EnumNull + NullVerification Verification = enum.Null // NoVerification required no verification. NoVerification Verification = 0 // LowVerification requires a verified email @@ -124,13 +124,13 @@ var ( ) func (v *Verification) UnmarshalJSON(b []byte) error { - i, err := nullable.EnumFromJSON(b) + i, err := enum.FromJSON(b) *v = Verification(i) return err } -func (v Verification) MarshalJSON() ([]byte, error) { return nullable.EnumToJSON(nullable.Enum(v)), nil } +func (v Verification) MarshalJSON() ([]byte, error) { return enum.ToJSON(enum.Enum(v)), nil } // Service is used for guild integrations and user connections. type Service string diff --git a/utils/json/nullable/enum.go b/utils/json/enum/enum.go similarity index 75% rename from utils/json/nullable/enum.go rename to utils/json/enum/enum.go index 7a21517..3efc74a 100644 --- a/utils/json/nullable/enum.go +++ b/utils/json/enum/enum.go @@ -1,20 +1,20 @@ -package nullable +package enum import "strconv" -// EnumNull is the value used to represent JSON null. +// Null is the value used to represent JSON null. // It should never be used as a value, as it won't get serialized as such. -const EnumNull = -1 +const Null = -1 // Enum is a nullable version of a uint8. // Enum values should only consist of positive values, as negative values are reserved for internal constants, such as -// EnumNull. +// Null. // This also mean that only 7 of the 8 Bit will be available for storage. type Enum int8 // Int8ToJSON converts the passed Enum to a byte slice with it's JSON representation. -func EnumToJSON(i Enum) []byte { - if i == EnumNull { +func ToJSON(i Enum) []byte { + if i == Null { return []byte("null") } else { return []byte(strconv.Itoa(int(i))) @@ -22,11 +22,11 @@ func EnumToJSON(i Enum) []byte { } // Int8FromJSON decodes the Enum stored as JSON src the passed byte slice. -func EnumFromJSON(b []byte) (Enum, error) { +func FromJSON(b []byte) (Enum, error) { s := string(b) if s == "null" { - return EnumNull, nil + return Null, nil } else { i, err := strconv.ParseUint(s, 10, 7) return Enum(i), err diff --git a/utils/json/nullable/enum_test.go b/utils/json/enum/enum_test.go similarity index 91% rename from utils/json/nullable/enum_test.go rename to utils/json/enum/enum_test.go index 68fc749..82f852c 100644 --- a/utils/json/nullable/enum_test.go +++ b/utils/json/enum/enum_test.go @@ -1,4 +1,4 @@ -package nullable +package enum import ( "reflect" @@ -13,7 +13,7 @@ func TestInt8ToJSON(t *testing.T) { }{ { name: "null", - src: EnumNull, + src: Null, expect: []byte("null"), }, { @@ -25,7 +25,7 @@ func TestInt8ToJSON(t *testing.T) { for _, c := range testCases { t.Run(c.name, func(t *testing.T) { - actual := EnumToJSON(c.src) + actual := ToJSON(c.src) if !reflect.DeepEqual(actual, c.expect) { t.Errorf("expected nullable.Int8ToJSON to return: %+v, but got: %+v", c.expect, actual) @@ -44,7 +44,7 @@ func TestInt8FromJSON(t *testing.T) { { name: "null", src: []byte("null"), - expect: EnumNull, + expect: Null, err: false, }, { @@ -63,7 +63,7 @@ func TestInt8FromJSON(t *testing.T) { for _, c := range testCases { t.Run(c.name, func(t *testing.T) { - actual, err := EnumFromJSON(c.src) + actual, err := FromJSON(c.src) if c.err { if err == nil {