@@ -7,9 +7,11 @@ const Big = require('big.js')
77const CID = require ( 'cids' )
88const PeerId = require ( 'peer-id' )
99const errCode = require ( 'err-code' )
10+ const multibase = require ( 'multibase' )
11+ const { cidToString } = require ( '../../utils/cid' )
1012
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 ) )
1315}
1416
1517module . exports = function bitswap ( self ) {
@@ -24,10 +26,18 @@ module.exports = function bitswap (self) {
2426 options = { }
2527 }
2628
29+ options = options || { }
30+
2731 if ( ! self . isOnline ( ) ) {
2832 return setImmediate ( ( ) => callback ( new Error ( OFFLINE_ERROR ) ) )
2933 }
3034
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+
3141 let list
3242 if ( peerId ) {
3343 try {
@@ -43,7 +53,7 @@ module.exports = function bitswap (self) {
4353 list = self . _bitswap . getWantlist ( )
4454 }
4555
46- setImmediate ( ( ) => callback ( null , wantlistToCidArray ( list ) ) )
56+ setImmediate ( ( ) => callback ( null , formatWantlist ( list , options . cidBase ) ) )
4757 } ) ,
4858
4959 stat : promisify ( ( options , callback ) => {
@@ -52,17 +62,25 @@ module.exports = function bitswap (self) {
5262 options = { }
5363 }
5464
65+ options = options || { }
66+
5567 if ( ! self . isOnline ( ) ) {
5668 return setImmediate ( ( ) => callback ( new Error ( OFFLINE_ERROR ) ) )
5769 }
5870
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+
5977 const snapshot = self . _bitswap . stat ( ) . snapshot
6078
6179 setImmediate ( ( ) => {
6280 callback ( null , {
6381 provideBufLen : parseInt ( snapshot . providesBufferLength . toString ( ) ) ,
6482 blocksReceived : new Big ( snapshot . blocksReceived ) ,
65- wantlist : wantlistToCidArray ( self . _bitswap . getWantlist ( ) ) ,
83+ wantlist : formatWantlist ( self . _bitswap . getWantlist ( ) , options . cidBase ) ,
6684 peers : self . _bitswap . peers ( ) . map ( ( id ) => id . toB58String ( ) ) ,
6785 dupBlksReceived : new Big ( snapshot . dupBlksReceived ) ,
6886 dupDataReceived : new Big ( snapshot . dupDataReceived ) ,
0 commit comments