From 5cb10ccbd7bb1a011962b73e4c99cf9c6d71a751 Mon Sep 17 00:00:00 2001 From: David Dias Date: Fri, 21 Oct 2016 08:44:10 +0100 Subject: [PATCH] feat: object API internals updated to use CID --- src/core/components/object.js | 39 ++++++++++++++++++++++------------- src/core/index.js | 5 ++--- test/core/both/test-block.js | 1 - 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/core/components/object.js b/src/core/components/object.js index 0373f0d4dc..902fdc2e4f 100644 --- a/src/core/components/object.js +++ b/src/core/components/object.js @@ -1,11 +1,12 @@ 'use strict' -const mDAG = require('ipfs-merkle-dag') const waterfall = require('async/waterfall') const promisify = require('promisify-es6') const bs58 = require('bs58') -const DAGNode = mDAG.DAGNode -const DAGLink = mDAG.DAGLink +const dagPB = require('ipld-dag-pb') +const DAGNode = dagPB.DAGNode +const DAGLink = dagPB.DAGLink +const CID = require('cids') function normalizeMultihash (multihash, enc) { if (typeof multihash === 'string') { @@ -49,9 +50,7 @@ function parseJSONBuffer (buf) { } function parseProtoBuffer (buf) { - const node = new DAGNode() - node.unMarshal(buf) - return node + return dagPB.util.deserialize(buf) } module.exports = function object (self) { @@ -63,9 +62,16 @@ module.exports = function object (self) { } waterfall([ - (cb) => self.object.get(multihash, options, cb), + (cb) => { + self.object.get(multihash, options, cb) + }, (node, cb) => { - self._dagService.put(edit(node), (err) => { + node = edit(node) + + self._ipldResolver.put({ + node: node, + cid: new CID(node.multihash()) + }, (err) => { cb(err, node) }) } @@ -77,7 +83,10 @@ module.exports = function object (self) { new: promisify((cb) => { const node = new DAGNode() - self._dagService.put(node, function (err) { + self._ipldResolver.put({ + node: node, + cid: new CID(node.multihash()) + }, function (err) { if (err) { return cb(err) } @@ -85,7 +94,6 @@ module.exports = function object (self) { cb(null, node) }) }), - put: promisify((obj, options, cb) => { if (typeof options === 'function') { cb = options @@ -114,7 +122,10 @@ module.exports = function object (self) { return cb(new Error('obj not recognized')) } - self._dagService.put(node, (err, block) => { + self._ipldResolver.put({ + node: node, + cid: new CID(node.multihash()) + }, (err, block) => { if (err) { return cb(err) } @@ -136,8 +147,8 @@ module.exports = function object (self) { } catch (err) { return cb(err) } - - self._dagService.get(mh, cb) + const cid = new CID(mh) + self._ipldResolver.get(cid, cb) }), data: promisify((multihash, options, cb) => { @@ -180,7 +191,7 @@ module.exports = function object (self) { return cb(err) } - const blockSize = node.marshal().length + const blockSize = dagPB.util.serialize(node).length const linkLength = node.links.reduce((a, l) => a + l.size, 0) cb(null, { diff --git a/src/core/index.js b/src/core/index.js index 859a352533..a58836c10c 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -1,8 +1,7 @@ 'use strict' const BlockService = require('ipfs-block-service') -const mDAG = require('ipfs-merkle-dag') -const DAGService = mDAG.DAGService +const IPLDResolver = require('ipld-resolver') const PeerBook = require('peer-book') const defaultRepo = require('./default-repo') @@ -44,7 +43,7 @@ function IPFS (repoInstance) { this._libp2pNode = null this._bitswap = null this._blockService = new BlockService(this._repo) - this._dagService = new DAGService(this._blockService) + this._ipldResolver = new IPLDResolver(this._blockService) // IPFS Core exposed components diff --git a/test/core/both/test-block.js b/test/core/both/test-block.js index 355ab215eb..e2950dd8ea 100644 --- a/test/core/both/test-block.js +++ b/test/core/both/test-block.js @@ -17,5 +17,4 @@ const common = { } } -console.log('->') test.block(common)