Compare commits

...

7 Commits

Author SHA1 Message Date
Łukasz Magiera
05eac5f7ca gx publish 0.7.15 2017-06-19 18:31:26 +02:00
Jakub Sztandera
1f385a8224 Merge pull request #20 from ipfs/feat/strofbase
Implement StringOfBase function
2017-06-19 17:58:20 +02:00
Łukasz Magiera
b42583c8bf Add StringOfBase function 2017-06-19 17:25:51 +02:00
Jeromy
45ce89d41a gx publish 0.7.14 2017-06-13 11:33:50 -07:00
Jeromy Johnson
a20203df14 Merge pull request #18 from magik6k/patch-1
Add git-raw code
2017-06-09 11:55:35 -07:00
Łukasz Magiera
d4ebfff511 Add git-raw code 2017-06-07 20:08:56 +02:00
Jeromy
e310d23e36 gx publish 0.7.13 2017-05-01 17:37:29 -07:00
4 changed files with 81 additions and 4 deletions

View File

@@ -1 +1 @@
0.7.12: QmYhQaCYEcaPPjxJX7YcPcVKkQfRy6sJ7B3XmGFk82XYdQ
0.7.15: QmNw61A6sJoXMeP37mJRtQZdNhj5e3FdjoTN3v4FyE96Gk

22
cid.go
View File

@@ -47,6 +47,10 @@ var (
// ErrCidTooShort means that the cid passed to decode was not long
// enough to be a valid Cid
ErrCidTooShort = errors.New("cid too short")
// ErrInvalidEncoding means that selected encoding is not supported
// by this Cid version
ErrInvalidEncoding = errors.New("invalid base encoding")
)
// These are multicodec-packed content types. The should match
@@ -58,6 +62,8 @@ const (
DagProtobuf = 0x70
DagCBOR = 0x71
GitRaw = 0x78
EthBlock = 0x90
EthBlockList = 0x91
EthTxTrie = 0x92
@@ -245,6 +251,22 @@ func (c *Cid) String() string {
}
}
// String returns the string representation of a Cid
// encoded is selected base
func (c *Cid) StringOfBase(base mbase.Encoding) (string, error) {
switch c.version {
case 0:
if base != mbase.Base58BTC {
return "", ErrInvalidEncoding
}
return c.hash.B58String(), nil
case 1:
return mbase.Encode(base, c.bytesV1())
default:
panic("not possible to reach this point")
}
}
// Hash returns the multihash contained by a Cid.
func (c *Cid) Hash() mh.Multihash {
return c.hash

View File

@@ -8,6 +8,7 @@ import (
"strings"
"testing"
mbase "github.com/multiformats/go-multibase"
mh "github.com/multiformats/go-multihash"
)
@@ -55,6 +56,60 @@ func TestBasicMarshaling(t *testing.T) {
assertEqual(t, cid, out2)
}
func TestBasesMarshaling(t *testing.T) {
h, err := mh.Sum([]byte("TEST"), mh.SHA3, 4)
if err != nil {
t.Fatal(err)
}
cid := &Cid{
codec: 7,
version: 1,
hash: h,
}
data := cid.Bytes()
out, err := Cast(data)
if err != nil {
t.Fatal(err)
}
assertEqual(t, cid, out)
testBases := []mbase.Encoding {
mbase.Base16,
mbase.Base32,
mbase.Base32hex,
mbase.Base32pad,
mbase.Base32hexPad,
mbase.Base58BTC,
mbase.Base58Flickr,
mbase.Base64pad,
mbase.Base64urlPad,
mbase.Base64url,
mbase.Base64,
}
for _, b := range testBases {
s, err := cid.StringOfBase(b)
if err != nil {
t.Fatal(err)
}
if s[0] != byte(b) {
t.Fatal("Invalid multibase header")
}
out2, err := Decode(s)
if err != nil {
t.Fatal(err)
}
assertEqual(t, cid, out2)
}
}
func TestEmptyString(t *testing.T) {
_, err := Decode("")
if err == nil {

View File

@@ -15,9 +15,9 @@
},
{
"author": "whyrusleeping",
"hash": "QmcxkxTVuURV2Ptse8TvkqH5BQDwV62X1x19JqqvbBzwUM",
"hash": "Qme4T6BE4sQxg7ZouamF5M7Tx1ZFTqzcns7BkyQPXpoT99",
"name": "go-multibase",
"version": "0.2.3"
"version": "0.2.4"
}
],
"gxVersion": "0.8.0",
@@ -25,6 +25,6 @@
"license": "MIT",
"name": "go-cid",
"releaseCmd": "git commit -a -m \"gx publish $VERSION\"",
"version": "0.7.12"
"version": "0.7.15"
}