rpc: remove HexBytes, replace all uses with hexutil.Bytes
This commit is contained in:
30
rpc/types.go
30
rpc/types.go
@ -17,8 +17,6 @@
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"math"
|
||||
"math/big"
|
||||
@ -274,31 +272,3 @@ func (bn *BlockNumber) UnmarshalJSON(data []byte) error {
|
||||
func (bn BlockNumber) Int64() int64 {
|
||||
return (int64)(bn)
|
||||
}
|
||||
|
||||
// HexBytes JSON-encodes as hex with 0x prefix.
|
||||
type HexBytes []byte
|
||||
|
||||
func (b HexBytes) MarshalJSON() ([]byte, error) {
|
||||
result := make([]byte, len(b)*2+4)
|
||||
copy(result, `"0x`)
|
||||
hex.Encode(result[3:], b)
|
||||
result[len(result)-1] = '"'
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (b *HexBytes) UnmarshalJSON(input []byte) error {
|
||||
if len(input) >= 2 && input[0] == '"' && input[len(input)-1] == '"' {
|
||||
input = input[1 : len(input)-1]
|
||||
}
|
||||
if !bytes.HasPrefix(input, []byte("0x")) {
|
||||
return fmt.Errorf("missing 0x prefix for hex byte array")
|
||||
}
|
||||
input = input[2:]
|
||||
if len(input) == 0 {
|
||||
*b = nil
|
||||
return nil
|
||||
}
|
||||
*b = make([]byte, len(input)/2)
|
||||
_, err := hex.Decode(*b, input)
|
||||
return err
|
||||
}
|
||||
|
@ -71,25 +71,3 @@ func TestHexNumberMarshalJSON(t *testing.T) {
|
||||
t.Fatalf("Invalid json.Marshal, expected '%s', got '%s'", exp, got)
|
||||
}
|
||||
}
|
||||
|
||||
var hexBytesTests = []struct{ in, out []byte }{
|
||||
{in: []byte(`"0x"`), out: []byte{}},
|
||||
{in: []byte(`"0x00"`), out: []byte{0}},
|
||||
{in: []byte(`"0x01ff"`), out: []byte{0x01, 0xFF}},
|
||||
}
|
||||
|
||||
func TestHexBytes(t *testing.T) {
|
||||
for i, test := range hexBytesTests {
|
||||
var dec HexBytes
|
||||
if err := json.Unmarshal(test.in, &dec); err != nil {
|
||||
t.Fatalf("test %d: can't decode: %v", i, err)
|
||||
}
|
||||
enc, _ := json.Marshal(HexBytes(test.out))
|
||||
if !bytes.Equal(dec, test.out) {
|
||||
t.Errorf("test %d: wrong decoded value 0x%x", i, dec)
|
||||
}
|
||||
if !bytes.Equal(enc, test.in) {
|
||||
t.Errorf("test %d: wrong encoded value %#q", i, enc)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user