ipfsaddr: Transport part.
Juan Batiz-Benet committed
Feb 1, 2015 at 06:32 UTC
5a8aa1afcff221457d4f98b202341715aec5ea67
2 files changed
+32
util/ipfsaddr/ipfsaddr.go
+12
@@ -18,6 +18,7 @@ var ErrInvalidAddr = errors.New("invalid ipfs address")
18
type IPFSAddr interface {
19
ID() peer.ID
20
Multiaddr() ma.Multiaddr
21
+ Transport() ma.Multiaddr
22
String() string
23
Equal(b interface{}) bool
24
}
@@ -35,6 +36,10 @@ func (a ipfsAddr) Multiaddr() ma.Multiaddr {
36
return a.ma
37
}
38
39
+func (a ipfsAddr) Transport() ma.Multiaddr {
40
+ return Transport(a)
41
+}
42
+
43
func (a ipfsAddr) String() string {
44
return a.ma.String()
45
}
@@ -98,3 +103,10 @@ func ParseMultiaddr(m ma.Multiaddr) (a IPFSAddr, err error) {
103
104
return ipfsAddr{ma: m, id: id}, nil
105
}
106
+
107
+func Transport(iaddr IPFSAddr) (maddr ma.Multiaddr) {
108
+ maddr = iaddr.Multiaddr()
109
+ split := ma.Split(maddr)
110
+ maddr = ma.Join(split[:len(split)-1]...)
111
+ return
112
+}
util/ipfsaddr/ipfsaddr_test.go
+20
@@ -115,3 +115,23 @@ func TestMultiaddrMatches(t *testing.T) {
115
}
116
}
117
}
118
+
119
+func TestTransport(t *testing.T) {
120
+ for _, g := range good {
121
+ a, err := ParseString(g)
122
+ if err != nil {
123
+ t.Error("failed to parse", g, err)
124
+ continue
125
+ }
126
+
127
+ m := newMultiaddr(t, g)
128
+ split := ma.Split(m)
129
+ m = ma.Join(split[:len(split)-1]...)
130
+ if a.Multiaddr().Equal(m) {
131
+ t.Error("should not be equal", a.Multiaddr(), m)
132
+ }
133
+ if !Transport(a).Equal(m) {
134
+ t.Error("should be equal", Transport(a), m)
135
+ }
136
+ }
137
+}