@cryptotaxi247 / kubo / commits / 3cd342490

cmds/swarm: now speaks ipfsaddr (.../ipfs...)

Juan Batiz-Benet committed Feb 1, 2015 at 06:36 UTC 3cd3424900397d9d0a4ff0833696b67519b0088d
1 file changed +15 -24
core/commands/swarm.go
+15 -24
@@ -4,15 +4,14 @@ import (
4 "bytes"
5 "fmt"
6 "io"
7 - "path"
7 "sort"
8
9 cmds "github.com/jbenet/go-ipfs/commands"
10 peer "github.com/jbenet/go-ipfs/p2p/peer"
11 errors "github.com/jbenet/go-ipfs/util/debugerror"
12 + iaddr "github.com/jbenet/go-ipfs/util/ipfsaddr"
13
14 context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
15 - ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
15 )
16
17 type stringList struct {
@@ -64,7 +63,7 @@ ipfs swarm peers lists the set of peers this node is connected to.
63 for i, c := range conns {
64 pid := c.RemotePeer()
65 addr := c.RemoteMultiaddr()
67 - addrs[i] = fmt.Sprintf("%s/%s", addr, pid.Pretty())
66 + addrs[i] = fmt.Sprintf("%s/ipfs/%s", addr, pid.Pretty())
67 }
68
69 sort.Sort(sort.StringSlice(addrs))
@@ -78,12 +77,12 @@ ipfs swarm peers lists the set of peers this node is connected to.
77
78 var swarmConnectCmd = &cmds.Command{
79 Helptext: cmds.HelpText{
81 - Tagline: "Open connection to a given peer",
80 + Tagline: "Open connection to a given address",
81 ShortDescription: `
82 'ipfs swarm connect' opens a connection to a peer address. The address format
83 is an ipfs multiaddr:
84
86 -ipfs swarm connect /ip4/104.131.131.82/tcp/4001/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ
85 +ipfs swarm connect /ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ
86 `,
87 },
88 Arguments: []cmds.Argument{
@@ -92,7 +91,6 @@ ipfs swarm connect /ip4/104.131.131.82/tcp/4001/QmaCpDMGvV2BGHeYERUEnRQAwe3N8Szb
91 Run: func(req cmds.Request, res cmds.Response) {
92 ctx := context.TODO()
93
95 - log.Debug("ipfs swarm connect")
94 n, err := req.Context().GetNode()
95 if err != nil {
96 res.SetError(err, cmds.ErrNormal)
@@ -146,37 +144,30 @@ func stringListMarshaler(res cmds.Response) (io.Reader, error) {
144 return &buf, nil
145 }
146
149 -// splitAddresses is a function that takes in a slice of string peer addresses
147 +// parseAddresses is a function that takes in a slice of string peer addresses
148 // (multiaddr + peerid) and returns slices of multiaddrs and peerids.
151 -func splitAddresses(addrs []string) (maddrs []ma.Multiaddr, pids []peer.ID, err error) {
152 -
153 - maddrs = make([]ma.Multiaddr, len(addrs))
154 - pids = make([]peer.ID, len(addrs))
155 - for i, addr := range addrs {
156 - a, err := ma.NewMultiaddr(path.Dir(addr))
157 - if err != nil {
158 - return nil, nil, cmds.ClientError("invalid peer address: " + err.Error())
159 - }
160 - id, err := peer.IDB58Decode(path.Base(addr))
149 +func parseAddresses(addrs []string) (iaddrs []iaddr.IPFSAddr, err error) {
150 + iaddrs = make([]iaddr.IPFSAddr, len(addrs))
151 + for i, saddr := range addrs {
152 + iaddrs[i], err = iaddr.ParseString(saddr)
153 if err != nil {
162 - return nil, nil, err
154 + return nil, cmds.ClientError("invalid peer address: " + err.Error())
155 }
164 - pids[i] = id
165 - maddrs[i] = a
156 }
157 return
158 }
159
160 // peersWithAddresses is a function that takes in a slice of string peer addresses
161 // (multiaddr + peerid) and returns a slice of properly constructed peers
172 -func peersWithAddresses(ps peer.Peerstore, addrs []string) ([]peer.ID, error) {
173 - maddrs, pids, err := splitAddresses(addrs)
162 +func peersWithAddresses(ps peer.Peerstore, addrs []string) (pids []peer.ID, err error) {
163 + iaddrs, err := parseAddresses(addrs)
164 if err != nil {
165 return nil, err
166 }
167
178 - for i, p := range pids {
179 - ps.AddAddress(p, maddrs[i])
168 + for _, iaddr := range iaddrs {
169 + pids = append(pids, iaddr.ID())
170 + ps.AddAddress(iaddr.ID(), iaddr.Multiaddr())
171 }
172 return pids, nil
173 }