Skip to content

Commit

Permalink
[WIP] feat: adding p2p-circuit proto (#41)
Browse files Browse the repository at this point in the history
* feat: adding p2p-circuit proto
  • Loading branch information
dryajov authored and daviddias committed Mar 27, 2017
1 parent e7e53b9 commit 08d5d5d
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 4 deletions.
34 changes: 31 additions & 3 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const extend = require('xtend')
const codec = require('./codec')
const protocols = require('./protocols-table')
const varint = require('varint')
const bs58 = require('bs58')

const NotImplemented = new Error('Sorry, Not Implemented Yet.')

Expand Down Expand Up @@ -83,8 +84,8 @@ Multiaddr.prototype.toOptions = function toOptions () {
*/
Multiaddr.prototype.inspect = function inspect () {
return '<Multiaddr ' +
this.buffer.toString('hex') + ' - ' +
codec.bufferToString(this.buffer) + '>'
this.buffer.toString('hex') + ' - ' +
codec.bufferToString(this.buffer) + '>'
}

/**
Expand All @@ -105,7 +106,7 @@ Multiaddr.prototype.inspect = function inspect () {
Multiaddr.prototype.protos = function protos () {
return map(this.protoCodes(), function (code) {
return extend(protocols(code))
// copy to prevent users from modifying the internal objs.
// copy to prevent users from modifying the internal objs.
})
}

Expand Down Expand Up @@ -231,6 +232,33 @@ Multiaddr.prototype.decapsulate = function decapsulate (addr) {
return Multiaddr(s.slice(0, i))
}

/**
* Extract the peerId if the multiaddr contains one
*
* @return {String} peerId - The id of the peer
* @example
* const mh1 = Multiaddr('/ip4/8.8.8.8/tcp/1080/ipfs/QmValidBase58string')
* // <Multiaddr 0408080808060438 - /ip4/8.8.8.8/tcp/1080/ipfs/QmValidBase58string>
*
* const peerId
*
* try {
* peerId = mh1.getPeerId()
* } catch (err) {
* // not a valid base58 address
* }
*/
Multiaddr.prototype.getPeerId = function getPeerId () {
let b58str = this.stringTuples().filter((tuple) => {
if (tuple[0] === protocols.names['ipfs'].code) {
return true
}
})[0][1]

bs58.decode(b58str)
return b58str
}

/**
* Checks if two Multiaddrs are the same
*
Expand Down
3 changes: 2 additions & 1 deletion src/protocols-table.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ Protocols.table = [
[477, 0, 'ws'],
[478, 0, 'wss'],
[275, 0, 'libp2p-webrtc-star'],
[276, 0, 'libp2p-webrtc-direct']
[276, 0, 'libp2p-webrtc-direct'],
[290, 0, 'p2p-circuit']
]

Protocols.names = {}
Expand Down
14 changes: 14 additions & 0 deletions test/index.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,20 @@ describe('variants', () => {
expect(addr.toString()).to.equal(str)
})

it('p2p-circuit', () => {
const str = '/p2p-circuit/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC'
const addr = multiaddr(str)
expect(addr).to.have.property('buffer')
expect(addr.toString()).to.equal(str)
})

it('p2p-circuit ipfs', () => {
const str = '/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/p2p-circuit'
const addr = multiaddr(str)
expect(addr).to.have.property('buffer')
expect(addr.toString()).to.equal(str)
})

it('webrtc-star', () => {
const str = '/libp2p-webrtc-star/ip4/127.0.0.1/tcp/9090/ws/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC'
const addr = multiaddr(str)
Expand Down

0 comments on commit 08d5d5d

Please sign in to comment.