mirror of
https://github.com/diamondburned/arikawa.git
synced 2024-11-30 10:43:30 +00:00
Utils: move Enum to package enum
This commit is contained in:
parent
d4bdf700f3
commit
b3bfc29732
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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 {
|
Loading…
Reference in a new issue