diff --git a/pkg/types/balance_type.go b/pkg/types/balance_type.go index c95815b9f2..f082596f31 100644 --- a/pkg/types/balance_type.go +++ b/pkg/types/balance_type.go @@ -22,33 +22,29 @@ const ( var ErrInvalidBalanceType = errors.New("invalid balance type") -func (b BalanceType) Validate() error { +func ParseBalanceType(s string) (b BalanceType, err error) { + b = BalanceType(strings.ToUpper(s)) switch b { - case BalanceTypeAvailable: - case BalanceTypeLocked: - case BalanceTypeBorrowed: - case BalanceTypeInterest: - case BalanceTypeNet: - case BalanceTypeTotal: - case BalanceTypeDebt: - default: - return ErrInvalidBalanceType + case BalanceTypeAvailable, BalanceTypeLocked, BalanceTypeBorrowed, BalanceTypeInterest, BalanceTypeNet, BalanceTypeTotal, BalanceTypeDebt: + return b, nil } - return nil + return b, ErrInvalidBalanceType } -func (p *BalanceType) UnmarshalJSON(data []byte) error { +func (b *BalanceType) UnmarshalJSON(data []byte) error { var s string if err := json.Unmarshal(data, &s); err != nil { return err } - *p = BalanceType(strings.ToUpper(s)) - if err := p.Validate(); err != nil { + t, err := ParseBalanceType(s) + if err != nil { return err } + *b = t + return nil } diff --git a/pkg/types/price_type.go b/pkg/types/price_type.go index d146be0cdc..93bc269e64 100644 --- a/pkg/types/price_type.go +++ b/pkg/types/price_type.go @@ -21,18 +21,13 @@ const ( var ErrInvalidPriceType = errors.New("invalid price type") -func (p PriceType) Validate() error { +func ParsePriceType(s string) (p PriceType, err error) { + p = PriceType(strings.ToUpper(s)) switch p { - case PriceTypeLast: - case PriceTypeBuy: - case PriceTypeSell: - case PriceTypeMid: - case PriceTypeMaker: - case PriceTypeTaker: - default: - return ErrInvalidPriceType + case PriceTypeLast, PriceTypeBuy, PriceTypeSell, PriceTypeMid, PriceTypeMaker, PriceTypeTaker: + return p, err } - return nil + return p, ErrInvalidPriceType } func (p *PriceType) UnmarshalJSON(data []byte) error { @@ -42,11 +37,13 @@ func (p *PriceType) UnmarshalJSON(data []byte) error { return err } - *p = PriceType(strings.ToUpper(s)) - if err := p.Validate(); err != nil { + t, err := ParsePriceType(s) + if err != nil { return err } + *p = t + return nil }