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

Commit 6d90b46

Browse files
committed
fix: set the FileStreamConverter explicitly
The `SendFilesStream` used to run the `FileStreamConverter` automatically. With making it an option to use a converter, `SendFilesStream` can be used outside of the Files API, e.g. for the DAG API. Closes #696.
1 parent d8494a6 commit 6d90b46

7 files changed

+53
-14
lines changed

src/files/add-pull-stream.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
'use strict'
22

33
const SendFilesStream = require('../utils/send-files-stream')
4+
const FileStreamConverter = require('../utils/file-stream-converter')
45
const toPull = require('stream-to-pull-stream')
56

6-
module.exports = (send) => (options) => toPull(SendFilesStream(send, 'add')(options))
7+
module.exports = (send) => {
8+
return (options) => {
9+
options = options || {}
10+
options.converter = FileStreamConverter
11+
return toPull(SendFilesStream(send, 'add')(options))
12+
}
13+
}

src/files/add-readable-stream.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
'use strict'
22

33
const SendFilesStream = require('../utils/send-files-stream')
4+
const FileStreamConverter = require('../utils/file-stream-converter')
45

5-
module.exports = (send) => SendFilesStream(send, 'add')
6+
module.exports = (send) => {
7+
return (options) => {
8+
options = options || {}
9+
options.converter = FileStreamConverter
10+
return SendFilesStream(send, 'add')(options)
11+
}
12+
}

src/files/add.js

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const ConcatStream = require('concat-stream')
55
const once = require('once')
66
const isStream = require('is-stream')
77
const OtherBuffer = require('buffer').Buffer
8+
const FileStreamConverter = require('../utils/file-stream-converter')
89
const SendFilesStream = require('../utils/send-files-stream')
910

1011
module.exports = (send) => {
@@ -21,6 +22,7 @@ module.exports = (send) => {
2122
if (!options) {
2223
options = {}
2324
}
25+
options.converter = FileStreamConverter
2426

2527
const ok = Buffer.isBuffer(_files) ||
2628
isStream.readable(_files) ||

src/files/write.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
const promisify = require('promisify-es6')
44
const concatStream = require('concat-stream')
55
const once = require('once')
6+
const FileStreamConverter = require('../utils/file-stream-converter')
67
const SendFilesStream = require('../utils/send-files-stream')
78

89
module.exports = (send) => {
@@ -28,7 +29,8 @@ module.exports = (send) => {
2829

2930
const options = {
3031
args: pathDst,
31-
qs: opts
32+
qs: opts,
33+
converter: FileStreamConverter
3234
}
3335

3436
const stream = sendFilesStream(options)

src/util/fs-add.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const isNode = require('detect-node')
44
const promisify = require('promisify-es6')
55
const moduleConfig = require('../utils/module-config')
66
const SendOneFile = require('../utils/send-one-file-multiple-results')
7+
const FileStreamConverter = require('../utils/file-stream-converter')
78

89
module.exports = (arg) => {
910
const sendOneFile = SendOneFile(moduleConfig(arg), 'add')
@@ -31,6 +32,10 @@ module.exports = (arg) => {
3132
return callback(new Error('"path" must be a string'))
3233
}
3334

34-
sendOneFile(path, { qs: opts }, callback)
35+
const requestOpts = {
36+
qs: opts,
37+
converter: FileStreamConverter
38+
}
39+
sendOneFile(path, requestOpts, callback)
3540
})
3641
}

src/util/url-add.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const parseUrl = require('url').parse
55
const request = require('../utils/request')
66
const moduleConfig = require('../utils/module-config')
77
const SendOneFile = require('../utils/send-one-file-multiple-results')
8+
const FileStreamConverter = require('../utils/file-stream-converter')
89

910
module.exports = (arg) => {
1011
const sendOneFile = SendOneFile(moduleConfig(arg), 'add')
@@ -49,7 +50,11 @@ const requestWithRedirect = (url, opts, sendOneFile, callback) => {
4950
}
5051
requestWithRedirect(redirection, opts, sendOneFile, callback)
5152
} else {
52-
sendOneFile(res, { qs: opts }, callback)
53+
const requestOpts = {
54+
qs: opts,
55+
converter: FileStreamConverter
56+
}
57+
sendOneFile(res, requestOpts, callback)
5358
}
5459
}).end()
5560
}

src/utils/send-files-stream.js

+20-9
Original file line numberDiff line numberDiff line change
@@ -127,15 +127,26 @@ module.exports = (send, path) => {
127127

128128
response.on('error', (err) => retStream.emit('error', err))
129129

130-
response.on('data', (d) => {
131-
if (d.Bytes && options.progress) {
132-
options.progress(d.Bytes)
133-
}
134-
})
135-
const convertedResponse = new FileStreamConverter()
136-
convertedResponse.once('end', () => retStream.push(null))
137-
convertedResponse.on('data', (d) => retStream.push(d))
138-
response.pipe(convertedResponse)
130+
if (options.converter) {
131+
response.on('data', (d) => {
132+
if (d.Bytes && options.progress) {
133+
options.progress(d.Bytes)
134+
}
135+
})
136+
137+
const convertedResponse = new options.converter()
138+
convertedResponse.once('end', () => retStream.push(null))
139+
convertedResponse.on('data', (d) => retStream.push(d))
140+
response.pipe(convertedResponse)
141+
} else {
142+
response.on('data', (d) => {
143+
if (d.Bytes && options.progress) {
144+
options.progress(d.Bytes)
145+
}
146+
retStream.push(d)
147+
})
148+
response.once('end', () => retStream.push(null))
149+
}
139150
})
140151

141152
// signal the multipart that the underlying stream has drained and that

0 commit comments

Comments
 (0)