File tree Expand file tree Collapse file tree 3 files changed +65
-54
lines changed Expand file tree Collapse file tree 3 files changed +65
-54
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ import (
11
11
p9fs "github.com/djdv/go-filesystem-utils/internal/filesystem/9p"
12
12
coreiface "github.com/ipfs/boxo/coreiface"
13
13
"github.com/multiformats/go-multiaddr"
14
+ maddrc "github.com/djdv/go-filesystem-utils/internal/multiaddr"
14
15
)
15
16
16
17
type (
@@ -36,7 +37,7 @@ func (*IPFSGuest) GuestID() filesystem.ID { return IPFSID }
36
37
func (ig * IPFSGuest ) UnmarshalJSON (b []byte ) error {
37
38
// multiformats/go-multiaddr issue #100
38
39
var maddrWorkaround struct {
39
- APIMaddr multiaddrContainer `json:"apiMaddr,omitempty"`
40
+ APIMaddr maddrc. Multiaddr `json:"apiMaddr,omitempty"`
40
41
}
41
42
if err := json .Unmarshal (b , & maddrWorkaround ); err != nil {
42
43
return err
Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ package multiaddr
2
+
3
+ import (
4
+ "encoding/json"
5
+
6
+ "github.com/multiformats/go-multiaddr"
7
+ )
8
+
9
+ // Multiaddr wraps the reference Multiaddr library
10
+ // adding deserialization support.
11
+ type Multiaddr struct { multiaddr.Multiaddr }
12
+
13
+ func (ma * Multiaddr ) MarshalBinary () ([]byte , error ) {
14
+ if maddr := ma .Multiaddr ; maddr != nil {
15
+ return maddr .MarshalBinary ()
16
+ }
17
+ return nil , nil
18
+ }
19
+
20
+ func (ma * Multiaddr ) UnmarshalBinary (b []byte ) error {
21
+ maddr , err := multiaddr .NewMultiaddrBytes (b )
22
+ if err != nil {
23
+ return err
24
+ }
25
+ ma .Multiaddr = maddr
26
+ return nil
27
+ }
28
+
29
+ func (ma * Multiaddr ) MarshalText () ([]byte , error ) {
30
+ if maddr := ma .Multiaddr ; maddr != nil {
31
+ return maddr .MarshalText ()
32
+ }
33
+ return []byte {}, nil
34
+ }
35
+
36
+ func (ma * Multiaddr ) UnmarshalText (b []byte ) error {
37
+ maddr , err := multiaddr .NewMultiaddr (string (b ))
38
+ if err != nil {
39
+ return err
40
+ }
41
+ ma .Multiaddr = maddr
42
+ return nil
43
+ }
44
+
45
+ func (ma * Multiaddr ) MarshalJSON () ([]byte , error ) {
46
+ if maddr := ma .Multiaddr ; maddr != nil {
47
+ return maddr .MarshalJSON ()
48
+ }
49
+ return []byte ("null" ), nil
50
+ }
51
+
52
+ func (ma * Multiaddr ) UnmarshalJSON (b []byte ) error {
53
+ var maddrString string
54
+ if err := json .Unmarshal (b , & maddrString ); err != nil {
55
+ return err
56
+ }
57
+ maddr , err := multiaddr .NewMultiaddr (maddrString )
58
+ if err != nil {
59
+ return err
60
+ }
61
+ ma .Multiaddr = maddr
62
+ return nil
63
+ }
You can’t perform that action at this time.
0 commit comments