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

feature - createAddStream #291

Merged
merged 2 commits into from
Jun 6, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"aegir": "^3.2.0",
"chai": "^3.5.0",
"gulp": "^3.9.1",
"interface-ipfs-core": "^0.2.0",
"interface-ipfs-core": "^0.2.2",
"ipfsd-ctl": "^0.14.0",
"pre-commit": "^1.1.2",
"stream-equal": "^0.1.8",
Expand Down Expand Up @@ -93,4 +93,4 @@
"url": "https://github.com/ipfs/js-ipfs-api/issues"
},
"homepage": "https://github.com/ipfs/js-ipfs-api"
}
}
36 changes: 36 additions & 0 deletions src/api/add-stream.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
'use strict'

const addCmd = require('./add.js')
const Duplex = require('stream').Duplex
const promisify = require('promisify-es6')

module.exports = (send) => {
const add = addCmd(send)

return promisify(function createAddStream (callback) {
const tuples = []

const ds = new Duplex({ objectMode: true })
ds._read = (n) => {}

ds._write = (file, enc, next) => {
tuples.push(file)
next()
}

ds.end = () => {
add(tuples, (err, res) => {
if (err) {
return ds.emit('error', err)
}

res.forEach((tuple) => {
ds.push(tuple)
})

ds.push(null)
})
}
callback(null, ds)
})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are errors handled somewhere?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good catch, tahnk you. Emitted the error upstream :)

}
7 changes: 6 additions & 1 deletion src/get-files-stream.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ function headers (file) {
'Content-Disposition': `file; filename="${name}"`
}

if (file.dir) {
if (file.dir || !file.content) {
header['Content-Type'] = 'application/x-directory'
} else if (file.symlink) {
header['Content-Type'] = 'application/symlink'
Expand Down Expand Up @@ -106,6 +106,11 @@ function getFilesStream (files, opts) {
return loadPaths(opts, file)
}

if (file.path && !file.content) {
file.dir = true
return file
}

if (file.path && (file.content || file.dir)) {
return file
}
Expand Down
6 changes: 5 additions & 1 deletion src/load-commands.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict'

function requireCommands () {
var cmds = {
const cmds = {
bitswap: require('./api/bitswap'),
block: require('./api/block'),
cat: require('./api/cat'),
Expand All @@ -28,6 +28,10 @@ function requireCommands () {
cmds.files = function (send) {
const files = require('./api/files')(send)
files.add = require('./api/add')(send)
files.createAddStream = require('./api/add-stream.js')(send)
// aliases
cmds.add = files.add
cmds.createAddStream = files.createAddStream
return files
}

Expand Down
7 changes: 5 additions & 2 deletions src/request-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,11 @@ exports = module.exports = function getRequestAPI (config) {
return p.then((res) => {
return new Promise(function (resolve, reject) {
transform(null, res, send, function (err, res) {
if (err) reject(err)
else resolve(res)
if (err) {
reject(err)
} else {
resolve(res)
}
})
})
})
Expand Down