Skip to content
This repository has been archived by the owner on Mar 10, 2020. It is now read-only.

Commit

Permalink
Merge pull request #56 from ipfs/feat/upgrade-files.add
Browse files Browse the repository at this point in the history
feat(files.add): update files.add API
  • Loading branch information
daviddias authored Aug 12, 2016
2 parents 3aeb90d + dfa0094 commit 79ee353
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 39 deletions.
6 changes: 4 additions & 2 deletions API/files/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ If no `content` is passed, then the path is treated as an empty directory
```js
{
path: '/tmp/myfile.txt',
node: DAGNode
hash: 'QmHash', // base58 encoded multihash
size: 123
}
```

Expand Down Expand Up @@ -79,7 +80,8 @@ ipfs.files.createAddStream(function (err, stream) {
// 'file' will be of the form
// {
// path: '/tmp/myfile.txt',
// node: DAGNode
// hash: 'QmHash' // base58 encoded multihash
// size: 123
// }
})

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,4 @@
"greenkeeperio-bot <support@greenkeeper.io>",
"nginnever <ginneversource@gmail.com>"
]
}
}
86 changes: 50 additions & 36 deletions src/files.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,21 +53,33 @@ module.exports = (common) => {
describe('.add', () => {
it('stream', (done) => {
const buffered = new Buffer('some data')
const expectedMultihash = 'QmVv4Wz46JaZJeH5PMV4LGbRiiMKEmszPYY3g6fjGnVXBS'

const rs = new Readable()
rs.push(buffered)
rs.push(null)

const arr = []
const filePair = {path: 'data.txt', content: rs}
const filePair = {
path: 'data.txt',
content: rs
}

arr.push(filePair)

ipfs.files.add(arr, (err, res) => {
expect(err).to.not.exist
expect(res).to.be.length(1)
expect(res[0].path).to.equal('data.txt')
expect(res[0].node.size()).to.equal(17)
const mh = 'QmVv4Wz46JaZJeH5PMV4LGbRiiMKEmszPYY3g6fjGnVXBS'
expect(bs58.encode(res[0].node.multihash()).toString()).to.equal(mh)
const file = res[0]
expect(file).to.be.eql({
path: 'data.txt',
size: 17,
hash: expectedMultihash
})
expect(file).to.eqlk
expect(file.path).to.equal('data.txt')
expect(file.size).to.equal(17)
expect(file.hash).to.equal(expectedMultihash)
done()
})
})
Expand All @@ -77,41 +89,40 @@ module.exports = (common) => {
path: 'testfile.txt',
content: smallFile
}
const expectedMultihash = 'Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP'

ipfs.files.add([file], (err, res) => {
expect(err).to.not.exist

const added = res[0] != null ? res[0] : res
const mh = bs58.encode(added.node.multihash()).toString()
expect(mh).to.equal('Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP')
expect(added.path).to.equal('testfile.txt')
expect(added.node.links).to.have.length(0)
const file = res[0]
expect(file.hash).to.equal(expectedMultihash)
expect(file.path).to.equal('testfile.txt')
done()
})
})

it('buffer', (done) => {
const expectedMultihash = 'Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP'

ipfs.files.add(smallFile, (err, res) => {
expect(err).to.not.exist

expect(res).to.have.length(1)
const mh = bs58.encode(res[0].node.multihash()).toString()
expect(mh).to.equal('Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP')
expect(res[0].path).to.equal(mh)
expect(res[0].node.links).to.have.length(0)
const file = res[0]
expect(file.hash).to.equal(expectedMultihash)
expect(file.path).to.equal(file.hash)
done()
})
})

it('BIG buffer', (done) => {
const expectedMultihash = 'Qme79tX2bViL26vNjPsF3DP1R9rMKMvnPYJiKTTKPrXJjq'

ipfs.files.add(bigFile, (err, res) => {
expect(err).to.not.exist

expect(res).to.have.length(1)
expect(res[0].node.links).to.have.length(58)
const mh = bs58.encode(res[0].node.multihash()).toString()
expect(res[0].path).to.equal(mh)
expect(mh).to.equal('Qme79tX2bViL26vNjPsF3DP1R9rMKMvnPYJiKTTKPrXJjq')
const file = res[0]
expect(file.hash).to.equal(expectedMultihash)
expect(file.path).to.equal(file.hash)
done()
})
})
Expand All @@ -121,9 +132,13 @@ module.exports = (common) => {
path: `test-folder/${name}`,
content: directoryContent[name]
})

const emptyDir = (name) => ({
path: `test-folder/${name}`
})

const expectedRootMultihash = 'QmVvjDy7yF7hdnqE8Hrf4MHo5ABDtb5AbX6hWbD3Y42bXP'

const dirs = [
content('pp.txt'),
content('holmes.txt'),
Expand All @@ -137,13 +152,10 @@ module.exports = (common) => {

ipfs.files.add(dirs, (err, res) => {
expect(err).to.not.exist
const root = res[res.length - 1]

const added = res[res.length - 1]
const mh = bs58.encode(added.node.multihash()).toString()
expect(added.node.links).to.have.length(6)
expect(added.path).to.equal('test-folder')
expect(mh).to.equal('QmVvjDy7yF7hdnqE8Hrf4MHo5ABDtb5AbX6hWbD3Y42bXP')

expect(root.path).to.equal('test-folder')
expect(root.hash).to.equal(expectedRootMultihash)
done()
})
})
Expand All @@ -154,9 +166,13 @@ module.exports = (common) => {
path: `test-folder/${name}`,
content: directoryContent[name]
})

const emptyDir = (name) => ({
path: `test-folder/${name}`
})

const expectedRootMultihash = 'QmVvjDy7yF7hdnqE8Hrf4MHo5ABDtb5AbX6hWbD3Y42bXP'

const files = [
content('pp.txt'),
content('holmes.txt'),
Expand All @@ -171,11 +187,9 @@ module.exports = (common) => {
ipfs.files.createAddStream((err, stream) => {
expect(err).to.not.exist

stream.on('data', (tuple) => {
if (tuple.path === 'test-folder') {
const mh = bs58.encode(tuple.node.multihash()).toString()
expect(mh).to.equal('QmVvjDy7yF7hdnqE8Hrf4MHo5ABDtb5AbX6hWbD3Y42bXP')
expect(tuple.node.links).to.have.length(6)
stream.on('data', (file) => {
if (file.path === 'test-folder') {
expect(file.hash).to.equal(expectedRootMultihash)
}
})

Expand Down Expand Up @@ -232,14 +246,14 @@ module.exports = (common) => {

describe('promise API', () => {
describe('.add', () => {
const expectedMultihash = 'Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP'

it('buffer', () => {
return ipfs.files.add(smallFile)
.then((res) => {
const added = res[0] != null ? res[0] : res
const mh = bs58.encode(added.node.multihash()).toString()
expect(mh).to.equal('Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP')
expect(added.path).to.equal(mh)
expect(added.node.links).to.have.length(0)
const file = res[0]
expect(file.hash).to.equal(expectedMultihash)
expect(file.path).to.equal(file.hash)
})
})
})
Expand Down

0 comments on commit 79ee353

Please sign in to comment.