Skip to content
This repository was archived by the owner on Feb 12, 2024. It is now read-only.

Commit c16bdc4

Browse files
committed
fix: code review
1 parent e859a81 commit c16bdc4

File tree

18 files changed

+163
-272
lines changed

18 files changed

+163
-272
lines changed

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
"form-data": "^2.3.3",
7373
"hat": "0.0.3",
7474
"interface-ipfs-core": "~0.96.0",
75-
"ipfsd-ctl": "~0.40.2",
75+
"ipfsd-ctl": "~0.41.0",
7676
"ncp": "^2.0.0",
7777
"qs": "^6.5.2",
7878
"rimraf": "^2.6.2",
@@ -128,7 +128,7 @@
128128
"joi": "^14.3.0",
129129
"joi-browser": "^13.4.0",
130130
"joi-multiaddr": "^4.0.0",
131-
"libp2p": "~0.24.3",
131+
"libp2p": "libp2p/js-libp2p#master",
132132
"libp2p-bootstrap": "~0.9.3",
133133
"libp2p-crypto": "~0.16.0",
134134
"libp2p-kad-dht": "~0.14.4",

src/cli/commands/daemon.js

-4
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@ module.exports = {
1818
type: 'boolean',
1919
default: false
2020
})
21-
.option('enable-dht-experiment', {
22-
type: 'boolean',
23-
default: false
24-
})
2521
.option('offline', {
2622
desc: 'Run offline. Do not connect to the rest of the network but provide local API.',
2723
default: false

src/cli/commands/dht/find-peer.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ module.exports = {
1414
const peers = await ipfs.dht.findPeer(peerID)
1515
const addresses = peers.multiaddrs.toArray().map((ma) => ma.toString())
1616

17-
print(addresses)
17+
addresses.forEach((addr) => {
18+
print(addr)
19+
})
1820
})())
1921
}
2022
}

src/cli/commands/dht/provide.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@ module.exports = {
1313
}
1414
},
1515

16-
handler ({ ipfs, key, resolve }) {
17-
// TODO add recursive option
16+
handler ({ ipfs, key, recursive, resolve }) {
17+
const opts = {
18+
recursive
19+
}
1820

1921
resolve((async () => {
20-
await ipfs.dht.provide(key)
22+
await ipfs.dht.provide(key, opts)
2123
})())
2224
}
2325
}

src/core/components/dht.js

+5-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ const PeerId = require('peer-id')
66
const PeerInfo = require('peer-info')
77
const CID = require('cids')
88
const each = require('async/each')
9-
const setImmediate = require('async/setImmediate')
9+
const nextTick = require('async/nextTick')
10+
1011
const errcode = require('err-code')
1112

1213
const debug = require('debug')
@@ -38,7 +39,7 @@ module.exports = (self) => {
3839
} catch (err) {
3940
log.error(err)
4041

41-
return setImmediate(() => callback(errcode(err, 'ERR_INVALID_CID')))
42+
return nextTick(() => callback(errcode(err, 'ERR_INVALID_CID')))
4243
}
4344
}
4445

@@ -64,7 +65,7 @@ module.exports = (self) => {
6465
} catch (err) {
6566
log.error(err)
6667

67-
return setImmediate(() => callback(errcode(err, 'ERR_INVALID_CID')))
68+
return nextTick(() => callback(errcode(err, 'ERR_INVALID_CID')))
6869
}
6970
}
7071

@@ -95,7 +96,7 @@ module.exports = (self) => {
9596
} catch (err) {
9697
log.error(err)
9798

98-
return setImmediate(() => callback(errcode(err, 'ERR_INVALID_CID')))
99+
return nextTick(() => callback(errcode(err, 'ERR_INVALID_CID')))
99100
}
100101
}
101102

src/core/components/libp2p.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,10 @@ function defaultBundle ({ datastore, peerInfo, peerBook, options, config }) {
7777
},
7878
dht: {
7979
kBucketSize: get(options, 'dht.kBucketSize', 20),
80-
enabledDiscovery: get(options, 'dht.enabledDiscovery', true),
80+
enabled: get(options, 'dht.enabled', true) && !(get(options, 'offline', false)),
81+
randomWalk: {
82+
enabled: get(options, 'dht.randomWalk.enabled', true)
83+
},
8184
validators: {
8285
ipns: ipnsUtils.validator
8386
},
@@ -86,7 +89,6 @@ function defaultBundle ({ datastore, peerInfo, peerBook, options, config }) {
8689
}
8790
},
8891
EXPERIMENTAL: {
89-
dht: !(get(options, 'local', false)),
9092
pubsub: get(options, 'EXPERIMENTAL.pubsub', false)
9193
}
9294
},

src/core/runtime/libp2p-browser.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,9 @@ class Node extends libp2p {
5454
}
5555
},
5656
dht: {
57-
kBucketSize: 20,
58-
enabledDiscovery: true
57+
enabled: false
5958
},
6059
EXPERIMENTAL: {
61-
dht: true,
6260
pubsub: false
6361
}
6462
}

src/core/runtime/libp2p-nodejs.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,12 @@ class Node extends libp2p {
5454
},
5555
dht: {
5656
kBucketSize: 20,
57-
enabledDiscovery: true
57+
enabled: true,
58+
randomWalk: {
59+
enabled: true
60+
}
5861
},
5962
EXPERIMENTAL: {
60-
dht: true,
6163
pubsub: false
6264
}
6365
}

src/http/api/resources/dht.js

+46-102
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict'
22

33
const Joi = require('joi')
4+
const Boom = require('boom')
45

56
const CID = require('cids')
67

@@ -16,34 +17,27 @@ exports.findPeer = {
1617
arg: Joi.string().required()
1718
}).unknown()
1819
},
19-
handler: (request, reply) => {
20+
async handler (request, h) {
2021
const ipfs = request.server.app.ipfs
2122
const { arg } = request.query
23+
let res
2224

23-
ipfs.dht.findPeer(arg, (err, res) => {
24-
if (err) {
25-
log.error(err)
26-
27-
if (err.code === 'ERR_LOOKUP_FAILED') {
28-
return reply({
29-
Message: err.toString(),
30-
Code: 0
31-
}).code(404)
32-
}
33-
34-
return reply({
35-
Message: err.toString(),
36-
Code: 0
37-
}).code(500)
25+
try {
26+
res = await ipfs.dht.findPeer(arg)
27+
} catch (err) {
28+
if (err.code === 'ERR_LOOKUP_FAILED') {
29+
throw Boom.notFound(err.toString())
30+
} else {
31+
throw Boom.boomify(err, { message: err.toString() })
3832
}
33+
}
3934

40-
reply({
41-
Responses: [{
42-
ID: res.id.toB58String(),
43-
Addrs: res.multiaddrs.toArray().map((a) => a.toString())
44-
}],
45-
Type: 2
46-
})
35+
return h.response({
36+
Responses: [{
37+
ID: res.id.toB58String(),
38+
Addrs: res.multiaddrs.toArray().map((a) => a.toString())
39+
}],
40+
Type: 2
4741
})
4842
}
4943
}
@@ -56,29 +50,20 @@ exports.findProvs = {
5650
timeout: Joi.number()
5751
}).unknown()
5852
},
59-
handler: (request, reply) => {
53+
async handler (request, h) {
6054
const ipfs = request.server.app.ipfs
6155
const { arg } = request.query
6256

6357
request.query.maxNumProviders = request.query['num-providers']
6458

65-
ipfs.dht.findProvs(arg, request.query, (err, res) => {
66-
if (err) {
67-
log.error(err)
68-
69-
return reply({
70-
Message: err.toString(),
71-
Code: 0
72-
}).code(500)
73-
}
59+
const res = await ipfs.dht.findProvs(arg, request.query)
7460

75-
reply({
76-
Responses: res.map((peerInfo) => ({
77-
ID: peerInfo.id.toB58String(),
78-
Addrs: peerInfo.multiaddrs.toArray().map((a) => a.toString())
79-
})),
80-
Type: 4
81-
})
61+
return h.response({
62+
Responses: res.map((peerInfo) => ({
63+
ID: peerInfo.id.toB58String(),
64+
Addrs: peerInfo.multiaddrs.toArray().map((a) => a.toString())
65+
})),
66+
Type: 4
8267
})
8368
}
8469
}
@@ -90,24 +75,15 @@ exports.get = {
9075
timeout: Joi.number()
9176
}).unknown()
9277
},
93-
handler: (request, reply) => {
78+
async handler (request, h) {
9479
const ipfs = request.server.app.ipfs
9580
const { arg } = request.query
9681

97-
ipfs.dht.get(Buffer.from(arg), (err, res) => {
98-
if (err) {
99-
log.error(err)
82+
const res = await ipfs.dht.get(Buffer.from(arg))
10083

101-
return reply({
102-
Message: err.toString(),
103-
Code: 0
104-
}).code(500)
105-
}
106-
107-
reply({
108-
Extra: res.toString(),
109-
Type: 5
110-
})
84+
return h.response({
85+
Extra: res.toString(),
86+
Type: 5
11187
})
11288
}
11389
}
@@ -118,7 +94,7 @@ exports.provide = {
11894
arg: Joi.string().required()
11995
}).unknown()
12096
},
121-
handler: (request, reply) => {
97+
async handler (request, h) {
12298
const ipfs = request.server.app.ipfs
12399
const { arg } = request.query
124100
let cid
@@ -127,25 +103,12 @@ exports.provide = {
127103
cid = new CID(arg)
128104
} catch (err) {
129105
log.error(err)
130-
131-
return reply({
132-
Message: err.toString(),
133-
Code: 0
134-
}).code(500)
106+
throw Boom.boomify(err, { message: err.toString() })
135107
}
136108

137-
ipfs.dht.provide(cid, request.query, (err) => {
138-
if (err) {
139-
log.error(err)
140-
141-
return reply({
142-
Message: err.toString(),
143-
Code: 0
144-
}).code(500)
145-
}
109+
await ipfs.dht.provide(cid)
146110

147-
reply({})
148-
})
111+
return h.response()
149112
}
150113
}
151114

@@ -155,29 +118,20 @@ exports.put = {
155118
arg: Joi.array().items(Joi.string()).length(2).required()
156119
}).unknown()
157120
},
158-
parseArgs: (request, reply) => {
159-
return reply({
121+
parseArgs: (request, h) => {
122+
return {
160123
key: request.query.arg[0],
161124
value: request.query.arg[1]
162-
})
125+
}
163126
},
164-
handler: (request, reply) => {
127+
async handler (request, h) {
165128
const key = request.pre.args.key
166129
const value = request.pre.args.value
167130
const ipfs = request.server.app.ipfs
168131

169-
ipfs.dht.put(Buffer.from(key), Buffer.from(value), (err) => {
170-
if (err) {
171-
log.error(err)
172-
173-
return reply({
174-
Message: err.toString(),
175-
Code: 0
176-
}).code(500)
177-
}
132+
await ipfs.dht.put(Buffer.from(key), Buffer.from(value))
178133

179-
reply({})
180-
})
134+
return h.response()
181135
}
182136
}
183137

@@ -187,25 +141,15 @@ exports.query = {
187141
arg: Joi.string().required()
188142
}).unknown()
189143
},
190-
handler: (request, reply) => {
144+
async handler (request, h) {
191145
const ipfs = request.server.app.ipfs
192146
const { arg } = request.query
193147

194-
ipfs.dht.query(arg, (err, res) => {
195-
if (err) {
196-
log.error(err)
197-
198-
return reply({
199-
Message: err.toString(),
200-
Code: 0
201-
}).code(500)
202-
}
148+
const res = await ipfs.dht.query(arg)
149+
const response = res.map((peerInfo) => ({
150+
ID: peerInfo.id.toB58String()
151+
}))
203152

204-
const response = res.map((peerInfo) => ({
205-
ID: peerInfo.id.toB58String()
206-
}))
207-
208-
reply(response)
209-
})
153+
return h.response(response)
210154
}
211155
}

src/http/api/routes/dht.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ module.exports = [
1515
method: '*',
1616
path: '/api/v0/dht/findprovs',
1717
options: {
18-
validate: resources.dht.findprovs.validate
18+
validate: resources.dht.findProvs.validate
1919
},
20-
handler: resources.dht.findprovs.handler
20+
handler: resources.dht.findProvs.handler
2121
},
2222
{
2323
method: '*',
@@ -39,6 +39,9 @@ module.exports = [
3939
method: '*',
4040
path: '/api/v0/dht/put',
4141
options: {
42+
pre: [
43+
{ method: resources.dht.put.parseArgs, assign: 'args' }
44+
],
4245
validate: resources.dht.put.validate
4346
},
4447
handler: resources.dht.put.handler

0 commit comments

Comments
 (0)