|
6 | 6 |
|
7 | 7 | b58 "gx/ipfs/QmT8rehPR3F6bmwL6zjUN8XpiDBFFpMP2myPdC6ApsWfJf/go-base58"
|
8 | 8 | mh "gx/ipfs/QmYf7ng2hG5XBtJA3tN34DQ2GUN5HNksEw1rLDkmr6vGku/go-multihash"
|
9 |
| - ds "gx/ipfs/QmZ6A6P6AMo8SR3jXAwzTuSU6B9R2Y4eqW2yW9VvfUayDN/go-datastore" |
| 9 | + base32 "gx/ipfs/Qmb1DA2A9LS2wR4FFweB4uEDomFsdmnw1VLawLE1yQzudj/base32" |
| 10 | + ds "gx/ipfs/QmbCg24DeRKaRDLHbzzSVj7xndmWCPanBLkAM7Lx2nbrFs/go-datastore" |
10 | 11 | )
|
11 | 12 |
|
12 | 13 | // Key is a string representation of multihash for use with maps.
|
@@ -38,7 +39,7 @@ func B58KeyEncode(k Key) string {
|
38 | 39 |
|
39 | 40 | // DsKey returns a Datastore key
|
40 | 41 | func (k Key) DsKey() ds.Key {
|
41 |
| - return ds.NewKey(string(k)) |
| 42 | + return ds.NewKey(base32.RawStdEncoding.EncodeToString([]byte(k))) |
42 | 43 | }
|
43 | 44 |
|
44 | 45 | // UnmarshalJSON returns a JSON-encoded Key (string)
|
@@ -68,36 +69,13 @@ func (k *Key) Loggable() map[string]interface{} {
|
68 | 69 | }
|
69 | 70 |
|
70 | 71 | // KeyFromDsKey returns a Datastore key
|
71 |
| -func KeyFromDsKey(dsk ds.Key) Key { |
72 |
| - return Key(dsk.String()[1:]) |
73 |
| -} |
74 |
| - |
75 |
| -// B58KeyConverter -- for KeyTransform datastores |
76 |
| -// (static as only one obj needed) |
77 |
| -var B58KeyConverter = b58KeyConverter{} |
78 |
| - |
79 |
| -type b58KeyConverter struct{} |
80 |
| - |
81 |
| -// ConvertKey returns a B58 encoded Datastore key |
82 |
| -// TODO: this is hacky because it encodes every path component. some |
83 |
| -// path components may be proper strings already... |
84 |
| -func (b58KeyConverter) ConvertKey(dsk ds.Key) ds.Key { |
85 |
| - k := ds.NewKey("/") |
86 |
| - for _, n := range dsk.Namespaces() { |
87 |
| - k = k.ChildString(b58.Encode([]byte(n))) |
| 72 | +func KeyFromDsKey(dsk ds.Key) (Key, error) { |
| 73 | + dec, err := base32.RawStdEncoding.DecodeString(dsk.String()[1:]) |
| 74 | + if err != nil { |
| 75 | + return "", err |
88 | 76 | }
|
89 |
| - return k |
90 |
| -} |
91 | 77 |
|
92 |
| -// InvertKey returns a b58 decoded Datastore key |
93 |
| -// TODO: this is hacky because it encodes every path component. some |
94 |
| -// path components may be proper strings already... |
95 |
| -func (b58KeyConverter) InvertKey(dsk ds.Key) ds.Key { |
96 |
| - k := ds.NewKey("/") |
97 |
| - for _, n := range dsk.Namespaces() { |
98 |
| - k = k.ChildString(string(b58.Decode(n))) |
99 |
| - } |
100 |
| - return k |
| 78 | + return Key(dec), nil |
101 | 79 | }
|
102 | 80 |
|
103 | 81 | // KeySlice is used for sorting Keys
|
|
0 commit comments