diff --git a/package.json b/package.json index ce60a2f18..bb42b3728 100644 --- a/package.json +++ b/package.json @@ -56,11 +56,11 @@ "url": "https://github.com/ipfs/js-ipfs-api" }, "devDependencies": { - "aegir": "^9.1.0", + "aegir": "^9.1.2", "chai": "^3.5.0", "gulp": "^3.9.1", "hapi": "^15.2.0", - "interface-ipfs-core": "^0.18.3", + "interface-ipfs-core": "^0.20.0", "ipfsd-ctl": "^0.17.0", "pre-commit": "^1.1.3", "socket.io": "^1.5.1", diff --git a/src/api/swarm.js b/src/api/swarm.js index d068645b7..293af9705 100644 --- a/src/api/swarm.js +++ b/src/api/swarm.js @@ -12,6 +12,9 @@ module.exports = (send) => { callback = opts opts = {} } + + const verbose = opts.v || opts.verbose + send({ path: 'swarm/peers', qs: opts @@ -19,9 +22,46 @@ module.exports = (send) => { if (err) { return callback(err) } - callback(null, result.Strings.map((addr) => { - return multiaddr(addr) - })) + + if (result.Strings) { + // go-ipfs <= 0.4.4 + callback(null, result.Strings.map((p) => { + const res = {} + + if (verbose) { + const parts = p.split(' ') + res.addr = multiaddr(parts[0]) + res.latency = parts[1] + } else { + res.addr = multiaddr(p) + } + + res.peer = PeerId.createFromB58String( + res.addr.decapsulate('ipfs') + ) + + return res + })) + } else if (result.Peers) { + // go-ipfs >= 0.4.5 + callback(null, result.Peers.map((p) => { + const res = { + addr: multiaddr(p.Addr), + peer: PeerId.createFromB58String(p.Peer), + muxer: p.Muxer + } + + if (p.Latency) { + res.latency = p.Latency + } + + if (p.Streams) { + res.streams = p.Streams + } + + return res + })) + } }) }), connect: promisify((args, opts, callback) => {