@@ -7,9 +7,11 @@ const Big = require('big.js')
7
7
const CID = require ( 'cids' )
8
8
const PeerId = require ( 'peer-id' )
9
9
const errCode = require ( 'err-code' )
10
+ const multibase = require ( 'multibase' )
11
+ const { cidToString } = require ( '../../utils/cid' )
10
12
11
- function wantlistToCidArray ( list ) {
12
- return Array . from ( list ) . map ( ( e ) => e [ 1 ] . cid )
13
+ function formatWantlist ( list , cidBase ) {
14
+ return Array . from ( list ) . map ( ( e ) => cidToString ( e [ 1 ] . cid , cidBase ) )
13
15
}
14
16
15
17
module . exports = function bitswap ( self ) {
@@ -24,10 +26,18 @@ module.exports = function bitswap (self) {
24
26
options = { }
25
27
}
26
28
29
+ options = options || { }
30
+
27
31
if ( ! self . isOnline ( ) ) {
28
32
return setImmediate ( ( ) => callback ( new Error ( OFFLINE_ERROR ) ) )
29
33
}
30
34
35
+ if ( options . cidBase && ! multibase . names . includes ( options . cidBase ) ) {
36
+ return setImmediate ( ( ) => {
37
+ callback ( errCode ( new Error ( 'invalid multibase' ) , 'ERR_INVALID_MULTIBASE' ) )
38
+ } )
39
+ }
40
+
31
41
let list
32
42
if ( peerId ) {
33
43
try {
@@ -43,7 +53,7 @@ module.exports = function bitswap (self) {
43
53
list = self . _bitswap . getWantlist ( )
44
54
}
45
55
46
- setImmediate ( ( ) => callback ( null , wantlistToCidArray ( list ) ) )
56
+ setImmediate ( ( ) => callback ( null , formatWantlist ( list , options . cidBase ) ) )
47
57
} ) ,
48
58
49
59
stat : promisify ( ( options , callback ) => {
@@ -52,17 +62,25 @@ module.exports = function bitswap (self) {
52
62
options = { }
53
63
}
54
64
65
+ options = options || { }
66
+
55
67
if ( ! self . isOnline ( ) ) {
56
68
return setImmediate ( ( ) => callback ( new Error ( OFFLINE_ERROR ) ) )
57
69
}
58
70
71
+ if ( options . cidBase && ! multibase . names . includes ( options . cidBase ) ) {
72
+ return setImmediate ( ( ) => {
73
+ callback ( errCode ( new Error ( 'invalid multibase' ) , 'ERR_INVALID_MULTIBASE' ) )
74
+ } )
75
+ }
76
+
59
77
const snapshot = self . _bitswap . stat ( ) . snapshot
60
78
61
79
setImmediate ( ( ) => {
62
80
callback ( null , {
63
81
provideBufLen : parseInt ( snapshot . providesBufferLength . toString ( ) ) ,
64
82
blocksReceived : new Big ( snapshot . blocksReceived ) ,
65
- wantlist : wantlistToCidArray ( self . _bitswap . getWantlist ( ) ) ,
83
+ wantlist : formatWantlist ( self . _bitswap . getWantlist ( ) , options . cidBase ) ,
66
84
peers : self . _bitswap . peers ( ) . map ( ( id ) => id . toB58String ( ) ) ,
67
85
dupBlksReceived : new Big ( snapshot . dupBlksReceived ) ,
68
86
dupDataReceived : new Big ( snapshot . dupDataReceived ) ,
0 commit comments