Compare commits
13 Commits
gx/v0.7.18
...
gx/v0.7.23
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9949dd29e5 | ||
|
|
75d3ffe549 | ||
|
|
8028fee095 | ||
|
|
bd441bb43e | ||
|
|
10a4d040b4 | ||
|
|
d204c18f7a | ||
|
|
b41162260a | ||
|
|
9cb0b7bcae | ||
|
|
5b04f30433 | ||
|
|
078355866b | ||
|
|
1805dd530f | ||
|
|
2055d2e652 | ||
|
|
63d4b33fcf |
@@ -1 +1 @@
|
||||
0.7.18: QmNp85zy9RLrQ5oQD4hPyS39ezrrXpcaa7R4Y9kxdWQLLQ
|
||||
0.7.23: QmVcXtRn6gpoSvoCWAxKUeS26QW4wTJgKQTbL1LsUU72R5
|
||||
|
||||
29
cid.go
29
cid.go
@@ -77,6 +77,8 @@ const (
|
||||
BitcoinTx = 0xb1
|
||||
ZcashBlock = 0xc0
|
||||
ZcashTx = 0xc1
|
||||
DecredBlock = 0xe0
|
||||
DecredTx = 0xe1
|
||||
)
|
||||
|
||||
// Codecs maps the name of a codec to its type
|
||||
@@ -99,6 +101,8 @@ var Codecs = map[string]uint64{
|
||||
"bitcoin-tx": BitcoinTx,
|
||||
"zcash-block": ZcashBlock,
|
||||
"zcash-tx": ZcashTx,
|
||||
"decred-block": DecredBlock,
|
||||
"decred-tx": DecredTx,
|
||||
}
|
||||
|
||||
// CodecToStr maps the numeric codec to its name
|
||||
@@ -120,6 +124,8 @@ var CodecToStr = map[uint64]string{
|
||||
BitcoinTx: "bitcoin-tx",
|
||||
ZcashBlock: "zcash-block",
|
||||
ZcashTx: "zcash-tx",
|
||||
DecredBlock: "decred-block",
|
||||
DecredTx: "decred-tx",
|
||||
}
|
||||
|
||||
// NewCidV0 returns a Cid-wrapped multihash.
|
||||
@@ -144,6 +150,27 @@ func NewCidV1(codecType uint64, mhash mh.Multihash) *Cid {
|
||||
}
|
||||
}
|
||||
|
||||
// NewPrefixV0 returns a CIDv0 prefix with the specified multihash type.
|
||||
func NewPrefixV0(mhType uint64) Prefix {
|
||||
return Prefix{
|
||||
MhType: mhType,
|
||||
MhLength: mh.DefaultLengths[mhType],
|
||||
Version: 0,
|
||||
Codec: DagProtobuf,
|
||||
}
|
||||
}
|
||||
|
||||
// NewPrefixV1 returns a CIDv1 prefix with the specified codec and multihash
|
||||
// type.
|
||||
func NewPrefixV1(codecType uint64, mhType uint64) Prefix {
|
||||
return Prefix{
|
||||
MhType: mhType,
|
||||
MhLength: mh.DefaultLengths[mhType],
|
||||
Version: 1,
|
||||
Codec: codecType,
|
||||
}
|
||||
}
|
||||
|
||||
// Cid represents a self-describing content adressed
|
||||
// identifier. It is formed by a Version, a Codec (which indicates
|
||||
// a multicodec-packed content type) and a Multihash.
|
||||
@@ -389,7 +416,7 @@ func (c *Cid) UnmarshalJSON(b []byte) error {
|
||||
//
|
||||
// Note that this formatting comes from the IPLD specification
|
||||
// (https://github.com/ipld/specs/tree/master/ipld)
|
||||
func (c *Cid) MarshalJSON() ([]byte, error) {
|
||||
func (c Cid) MarshalJSON() ([]byte, error) {
|
||||
return []byte(fmt.Sprintf("{\"/\":\"%s\"}", c.String())), nil
|
||||
}
|
||||
|
||||
|
||||
89
cid_test.go
89
cid_test.go
@@ -33,6 +33,8 @@ var tCodecs = map[uint64]string{
|
||||
BitcoinTx: "bitcoin-tx",
|
||||
ZcashBlock: "zcash-block",
|
||||
ZcashTx: "zcash-tx",
|
||||
DecredBlock: "decred-block",
|
||||
DecredTx: "decred-tx",
|
||||
}
|
||||
|
||||
func assertEqual(t *testing.T, a, b *Cid) {
|
||||
@@ -189,6 +191,64 @@ func TestV0ErrorCases(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewPrefixV1(t *testing.T) {
|
||||
data := []byte("this is some test content")
|
||||
|
||||
// Construct c1
|
||||
prefix := NewPrefixV1(DagCBOR, mh.SHA2_256)
|
||||
c1, err := prefix.Sum(data)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if c1.Prefix() != prefix {
|
||||
t.Fatal("prefix not preserved")
|
||||
}
|
||||
|
||||
// Construct c2
|
||||
hash, err := mh.Sum(data, mh.SHA2_256, -1)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
c2 := NewCidV1(DagCBOR, hash)
|
||||
|
||||
if !c1.Equals(c2) {
|
||||
t.Fatal("cids mismatch")
|
||||
}
|
||||
if c1.Prefix() != c2.Prefix() {
|
||||
t.Fatal("prefixes mismatch")
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewPrefixV0(t *testing.T) {
|
||||
data := []byte("this is some test content")
|
||||
|
||||
// Construct c1
|
||||
prefix := NewPrefixV0(mh.SHA2_256)
|
||||
c1, err := prefix.Sum(data)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if c1.Prefix() != prefix {
|
||||
t.Fatal("prefix not preserved")
|
||||
}
|
||||
|
||||
// Construct c2
|
||||
hash, err := mh.Sum(data, mh.SHA2_256, -1)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
c2 := NewCidV0(hash)
|
||||
|
||||
if !c1.Equals(c2) {
|
||||
t.Fatal("cids mismatch")
|
||||
}
|
||||
if c1.Prefix() != c2.Prefix() {
|
||||
t.Fatal("prefixes mismatch")
|
||||
}
|
||||
}
|
||||
|
||||
func TestPrefixRoundtrip(t *testing.T) {
|
||||
data := []byte("this is some test content")
|
||||
hash, _ := mh.Sum(data, mh.SHA2_256, -1)
|
||||
@@ -325,3 +385,32 @@ func TestFromJson(t *testing.T) {
|
||||
t.Fatal("json parsing failed")
|
||||
}
|
||||
}
|
||||
|
||||
func TestJsonRoundTrip(t *testing.T) {
|
||||
exp, err := Decode("zb2rhhFAEMepUBbGyP1k8tGfz7BSciKXP6GHuUeUsJBaK6cqG")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Verify it works for a *Cid.
|
||||
enc, err := json.Marshal(exp)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var actual Cid
|
||||
err = json.Unmarshal(enc, &actual)
|
||||
if !exp.Equals(&actual) {
|
||||
t.Fatal("cids not equal for *Cid")
|
||||
}
|
||||
|
||||
// Verify it works for a Cid.
|
||||
enc, err = json.Marshal(*exp)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var actual2 Cid
|
||||
err = json.Unmarshal(enc, &actual2)
|
||||
if !exp.Equals(&actual2) {
|
||||
t.Fatal("cids not equal for Cid")
|
||||
}
|
||||
}
|
||||
|
||||
10
package.json
10
package.json
@@ -9,15 +9,15 @@
|
||||
"gxDependencies": [
|
||||
{
|
||||
"author": "whyrusleeping",
|
||||
"hash": "QmU9a9NV9RdPNwZQDYd5uKsm6N6LJLSvLbywDDYFbaaC6P",
|
||||
"hash": "QmPnFwZ2JXKnXgMw8CdBPxn7FWh6LLdjUjxV1fKHuJnkr8",
|
||||
"name": "go-multihash",
|
||||
"version": "1.0.5"
|
||||
"version": "1.0.8"
|
||||
},
|
||||
{
|
||||
"author": "whyrusleeping",
|
||||
"hash": "QmafgXF3u3QSWErQoZ2URmQp5PFG384htoE7J338nS2H7T",
|
||||
"hash": "QmexBtiTTEwwn42Yi6ouKt6VqzpA6wjJgiW1oh9VfaRrup",
|
||||
"name": "go-multibase",
|
||||
"version": "0.2.5"
|
||||
"version": "0.2.6"
|
||||
}
|
||||
],
|
||||
"gxVersion": "0.8.0",
|
||||
@@ -25,6 +25,6 @@
|
||||
"license": "MIT",
|
||||
"name": "go-cid",
|
||||
"releaseCmd": "git commit -a -m \"gx publish $VERSION\"",
|
||||
"version": "0.7.18"
|
||||
"version": "0.7.23"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user