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

Commit e2bc06c

Browse files
committed
Merge pull request #291 from ipfs/feature/createAddStream
feature - createAddStream
2 parents 78348b2 + d821abb commit e2bc06c

File tree

5 files changed

+54
-6
lines changed

5 files changed

+54
-6
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"aegir": "^3.2.0",
3333
"chai": "^3.5.0",
3434
"gulp": "^3.9.1",
35-
"interface-ipfs-core": "^0.2.0",
35+
"interface-ipfs-core": "^0.2.2",
3636
"ipfsd-ctl": "^0.14.0",
3737
"pre-commit": "^1.1.2",
3838
"stream-equal": "^0.1.8",
@@ -93,4 +93,4 @@
9393
"url": "https://github.com/ipfs/js-ipfs-api/issues"
9494
},
9595
"homepage": "https://github.com/ipfs/js-ipfs-api"
96-
}
96+
}

src/api/add-stream.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
'use strict'
2+
3+
const addCmd = require('./add.js')
4+
const Duplex = require('stream').Duplex
5+
const promisify = require('promisify-es6')
6+
7+
module.exports = (send) => {
8+
const add = addCmd(send)
9+
10+
return promisify(function createAddStream (callback) {
11+
const tuples = []
12+
13+
const ds = new Duplex({ objectMode: true })
14+
ds._read = (n) => {}
15+
16+
ds._write = (file, enc, next) => {
17+
tuples.push(file)
18+
next()
19+
}
20+
21+
ds.end = () => {
22+
add(tuples, (err, res) => {
23+
if (err) {
24+
return ds.emit('error', err)
25+
}
26+
27+
res.forEach((tuple) => {
28+
ds.push(tuple)
29+
})
30+
31+
ds.push(null)
32+
})
33+
}
34+
callback(null, ds)
35+
})
36+
}

src/get-files-stream.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function headers (file) {
1010
'Content-Disposition': `file; filename="${name}"`
1111
}
1212

13-
if (file.dir) {
13+
if (file.dir || !file.content) {
1414
header['Content-Type'] = 'application/x-directory'
1515
} else if (file.symlink) {
1616
header['Content-Type'] = 'application/symlink'
@@ -106,6 +106,11 @@ function getFilesStream (files, opts) {
106106
return loadPaths(opts, file)
107107
}
108108

109+
if (file.path && !file.content) {
110+
file.dir = true
111+
return file
112+
}
113+
109114
if (file.path && (file.content || file.dir)) {
110115
return file
111116
}

src/load-commands.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use strict'
22

33
function requireCommands () {
4-
var cmds = {
4+
const cmds = {
55
bitswap: require('./api/bitswap'),
66
block: require('./api/block'),
77
cat: require('./api/cat'),
@@ -28,6 +28,10 @@ function requireCommands () {
2828
cmds.files = function (send) {
2929
const files = require('./api/files')(send)
3030
files.add = require('./api/add')(send)
31+
files.createAddStream = require('./api/add-stream.js')(send)
32+
// aliases
33+
cmds.add = files.add
34+
cmds.createAddStream = files.createAddStream
3135
return files
3236
}
3337

src/request-api.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,11 @@ exports = module.exports = function getRequestAPI (config) {
144144
return p.then((res) => {
145145
return new Promise(function (resolve, reject) {
146146
transform(null, res, send, function (err, res) {
147-
if (err) reject(err)
148-
else resolve(res)
147+
if (err) {
148+
reject(err)
149+
} else {
150+
resolve(res)
151+
}
149152
})
150153
})
151154
})

0 commit comments

Comments
 (0)