@@ -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