@cryptotaxi247 / kubo / commits / 5a8aa1afc

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 +}