OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / tendermint / go-wire / data / base58 / encoder.go
1 package base58
2
3 import (
4         "encoding/json"
5
6         "github.com/pkg/errors"
7         data "github.com/tendermint/go-wire/data"
8 )
9
10 var (
11         BTCEncoder    data.ByteEncoder = base58Encoder{BTCAlphabet}
12         FlickrEncoder                  = base58Encoder{FlickrAlphabet}
13 )
14
15 // base58Encoder implements ByteEncoder encoding the slice as
16 // base58 url-safe encoding
17 type base58Encoder struct {
18         alphabet string
19 }
20
21 func (e base58Encoder) _assertByteEncoder() data.ByteEncoder {
22         return e
23 }
24
25 func (e base58Encoder) Unmarshal(dst *[]byte, src []byte) (err error) {
26         var s string
27         err = json.Unmarshal(src, &s)
28         if err != nil {
29                 return errors.Wrap(err, "parse string")
30         }
31         *dst, err = DecodeAlphabet(s, e.alphabet)
32         return err
33 }
34
35 func (e base58Encoder) Marshal(bytes []byte) ([]byte, error) {
36         s := EncodeAlphabet(bytes, e.alphabet)
37         return json.Marshal(s)
38 }