From 38400ba1a91ce6f1f0cfcdfd711046db69ed1e01 Mon Sep 17 00:00:00 2001 From: haoliangyu Date: Sat, 2 Dec 2017 18:25:05 -0500 Subject: [PATCH 1/2] fix(pubsub.peers): remove the requirement for a topic --- src/core/components/pubsub.js | 15 ++++++++++++--- src/http/api/resources/pubsub.js | 10 +++++----- test/http-api/spec/pubsub.js | 6 +++--- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/core/components/pubsub.js b/src/core/components/pubsub.js index 0639654725..5451b754ed 100644 --- a/src/core/components/pubsub.js +++ b/src/core/components/pubsub.js @@ -77,9 +77,18 @@ module.exports = function pubsub (self) { return setImmediate(() => callback(new Error(OFFLINE_ERROR))) } - const peers = Array.from(self._pubsub.peers.values()) - .filter((peer) => peer.topics.has(topic)) - .map((peer) => peer.info.id.toB58String()) + if (typeof topic === 'function') { + callback = topic + topic = null + } + + let peers = Array.from(self._pubsub.peers.values()) + + if (topic) { + peers = peers.filter((peer) => peer.topics.has(topic)) + } + + peers = peers.map((peer) => peer.info.id.toB58String()) setImmediate(() => callback(null, peers)) }), diff --git a/src/http/api/resources/pubsub.js b/src/http/api/resources/pubsub.js index a0dd21f748..065746c62e 100644 --- a/src/http/api/resources/pubsub.js +++ b/src/http/api/resources/pubsub.js @@ -102,13 +102,13 @@ exports.peers = { const topic = request.query.arg const ipfs = request.server.app.ipfs - if (!topic) { - return reply(new Error('Missing topic')) - } - ipfs.pubsub.peers(topic, (err, peers) => { if (err) { - return reply(new Error(`Failed to find peers subscribed to ${topic}: ${err}`)) + const message = topic + ? `Failed to find peers subscribed to ${topic}: ${err}` + : `Failed to find peers: ${err}` + + return reply(new Error(message)) } reply({Strings: peers}) diff --git a/test/http-api/spec/pubsub.js b/test/http-api/spec/pubsub.js index bbb8b56e66..2248a660af 100644 --- a/test/http-api/spec/pubsub.js +++ b/test/http-api/spec/pubsub.js @@ -91,13 +91,13 @@ module.exports = (http) => { }) describe('/peers', () => { - it('returns 500 if no topic is provided', (done) => { + it('returns 200 if no topic is provided', (done) => { api.inject({ method: 'GET', url: `/api/v0/pubsub/peers` }, (res) => { - expect(res.statusCode).to.equal(500) - expect(res.result.Code).to.be.eql(1) + expect(res.statusCode).to.equal(200) + expect(res.result.Strings).to.be.eql([]) done() }) }) From 6ab1938ebf6f11f6f60038399f0aaa83282e77d7 Mon Sep 17 00:00:00 2001 From: Haoliang Yu Date: Tue, 5 Dec 2017 10:24:09 -0500 Subject: [PATCH 2/2] shorter code --- src/core/components/pubsub.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/core/components/pubsub.js b/src/core/components/pubsub.js index 5451b754ed..9796faf479 100644 --- a/src/core/components/pubsub.js +++ b/src/core/components/pubsub.js @@ -82,13 +82,9 @@ module.exports = function pubsub (self) { topic = null } - let peers = Array.from(self._pubsub.peers.values()) - - if (topic) { - peers = peers.filter((peer) => peer.topics.has(topic)) - } - - peers = peers.map((peer) => peer.info.id.toB58String()) + const peers = Array.from(self._pubsub.peers.values()) + .filter((peer) => topic ? peer.topics.has(topic) : true) + .map((peer) => peer.info.id.toB58String()) setImmediate(() => callback(null, peers)) }),