Skip to content

Commit

Permalink
Revert "Serialize Uint64 to string in JSON (#2229)"
Browse files Browse the repository at this point in the history
This reverts commit 4940e56.
  • Loading branch information
anorth committed Mar 15, 2019
1 parent 239e580 commit 977bfb9
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 19 deletions.
14 changes: 0 additions & 14 deletions commands/chain_daemon_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,18 +110,4 @@ func TestChainDaemon(t *testing.T) {
assert.Contains(chainLsResult, "1")
assert.Contains(chainLsResult, "0")
})

t.Run("chain ls --long with JSON encoding returns integer string block height and nonce", func(t *testing.T) {
t.Parallel()
assert := assert.New(t)

daemon := th.NewDaemon(t, th.WithMiner(fixtures.TestMiners[0])).Start()
defer daemon.ShutdownSuccess()

daemon.RunSuccess("mining", "once", "--enc", "text")
chainLsResult := daemon.RunSuccess("chain", "ls", "--long", "--enc", "json").ReadStdoutTrimNewlines()
assert.Contains(chainLsResult, `"height":"0"`)
assert.Contains(chainLsResult, `"height":"1"`)
assert.Contains(chainLsResult, `"nonce":"0"`)
})
}
9 changes: 5 additions & 4 deletions types/uint64.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package types

import (
"strconv"
"encoding/base64"
"strings"

"gx/ipfs/QmSKyB5faguXT4NqbrXpnRXqaVj5DhSm7x9BtzFydBY1UK/go-leb128"
Expand Down Expand Up @@ -29,16 +29,17 @@ type Uint64 uint64

// MarshalJSON converts a Uint64 to a json string and returns it.
func (u Uint64) MarshalJSON() ([]byte, error) {
return []byte(`"` + strconv.FormatUint(uint64(u), 10) + `"`), nil
encoded := base64.StdEncoding.EncodeToString(leb128.FromUInt64(uint64(u)))
return []byte(`"` + encoded + `"`), nil
}

// UnmarshalJSON converts a json string to a Uint64.
func (u *Uint64) UnmarshalJSON(b []byte) error {
val, err := strconv.ParseUint(strings.Trim(string(b), `"`), 10, 64)
jd, err := base64.StdEncoding.DecodeString(strings.Trim(string(b), `"`))
if err != nil {
return err
}

*u = Uint64(val)
*u = Uint64(leb128.ToUInt64(jd))
return nil
}
1 change: 0 additions & 1 deletion types/uint64_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ func TestUint64Json(t *testing.T) {
v := Uint64(64)
m, err := json.Marshal(v)
assert.NoError(err)
assert.Equal(`"64"`, string(m))
var got Uint64
err = json.Unmarshal(m, &got)
assert.NoError(err)
Expand Down

0 comments on commit 977bfb9

Please sign in to comment.