mirror of
https://github.com/transloadit/uppy.git
synced 2026-07-30 05:23:05 +00:00
Merge pull request #2139 from transloadit/send-back-download-error
companion: emit error to client if download fails
This commit is contained in:
commit
fdd7efc9fa
8 changed files with 37 additions and 17 deletions
|
|
@ -204,13 +204,21 @@ class Uploader {
|
|||
|
||||
/**
|
||||
*
|
||||
* @param {Buffer | Buffer[]} chunk
|
||||
* @param {Error} err
|
||||
* @param {string | Buffer | Buffer[]} chunk
|
||||
*/
|
||||
handleChunk (chunk) {
|
||||
handleChunk (err, chunk) {
|
||||
if (this.uploadStopped) {
|
||||
return
|
||||
}
|
||||
|
||||
if (err) {
|
||||
logger.error(err, 'uploader.download.error', this.shortToken)
|
||||
this.emitError(err)
|
||||
this.cleanUp()
|
||||
return
|
||||
}
|
||||
|
||||
// @todo a default protocol should not be set. We should ensure that the user specifies her protocol.
|
||||
const protocol = this.options.protocol || PROTOCOLS.multipart
|
||||
|
||||
|
|
|
|||
|
|
@ -94,12 +94,18 @@ const validateURL = (url, debug) => {
|
|||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* @callback downloadCallback
|
||||
* @param {Error} err
|
||||
* @param {string | Buffer | Buffer[]} chunk
|
||||
*/
|
||||
|
||||
/**
|
||||
* Downloads the content in the specified url, and passes the data
|
||||
* to the callback chunk by chunk.
|
||||
*
|
||||
* @param {string} url
|
||||
* @param {typeof Function} onDataChunk
|
||||
* @param {downloadCallback} onDataChunk
|
||||
* @param {boolean} blockLocalIPs
|
||||
* @param {string=} traceId
|
||||
*/
|
||||
|
|
@ -112,7 +118,7 @@ const downloadURL = (url, onDataChunk, blockLocalIPs, traceId) => {
|
|||
}
|
||||
|
||||
request(opts)
|
||||
.on('data', onDataChunk)
|
||||
.on('end', () => onDataChunk(null))
|
||||
.on('data', (chunk) => onDataChunk(null, chunk))
|
||||
.on('end', () => onDataChunk(null, null))
|
||||
.on('error', (err) => logger.error(err, 'controller.url.download.error', traceId))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -109,10 +109,11 @@ class Drive extends Provider {
|
|||
.qs({ alt: 'media', supportsAllDrives: true })
|
||||
.auth(token)
|
||||
.request()
|
||||
.on('data', onData)
|
||||
.on('end', () => onData(null))
|
||||
.on('data', (chunk) => onData(null, chunk))
|
||||
.on('end', () => onData(null, null))
|
||||
.on('error', (err) => {
|
||||
logger.error(err, 'provider.drive.download.error')
|
||||
onData(err)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -121,10 +121,11 @@ class DropBox extends Provider {
|
|||
})
|
||||
.auth(token)
|
||||
.request()
|
||||
.on('data', onData)
|
||||
.on('end', () => onData(null))
|
||||
.on('data', (chunk) => onData(null, chunk))
|
||||
.on('end', () => onData(null, null))
|
||||
.on('error', (err) => {
|
||||
logger.error(err, 'provider.dropbox.download.error')
|
||||
onData(err)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -82,10 +82,11 @@ class Facebook extends Provider {
|
|||
.request((err, resp, body) => {
|
||||
if (err) return logger.error(err, 'provider.facebook.download.error')
|
||||
request(this._getMediaUrl(body))
|
||||
.on('data', onData)
|
||||
.on('end', () => onData(null))
|
||||
.on('data', (chunk) => onData(null, chunk))
|
||||
.on('end', () => onData(null, null))
|
||||
.on('error', (err) => {
|
||||
logger.error(err, 'provider.facebook.download.url.error')
|
||||
onData(err)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,10 +78,11 @@ class Instagram extends Provider {
|
|||
.request((err, resp, body) => {
|
||||
if (err) return logger.error(err, 'provider.instagram.download.error')
|
||||
request(body.media_url)
|
||||
.on('data', onData)
|
||||
.on('end', () => onData(null))
|
||||
.on('data', (chunk) => onData(null, chunk))
|
||||
.on('end', () => onData(null, null))
|
||||
.on('error', (err) => {
|
||||
logger.error(err, 'provider.instagram.download.url.error')
|
||||
onData(err)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,10 +79,11 @@ class Instagram extends Provider {
|
|||
.request((err, resp, body) => {
|
||||
if (err) return logger.error(err, 'provider.instagram.download.error')
|
||||
request(this._getMediaUrl(body, query.carousel_id))
|
||||
.on('data', onData)
|
||||
.on('end', () => onData(null))
|
||||
.on('data', (chunk) => onData(null, chunk))
|
||||
.on('end', () => onData(null, null))
|
||||
.on('error', (err) => {
|
||||
logger.error(err, 'provider.instagram.download.url.error')
|
||||
onData(err)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,10 +70,11 @@ class OneDrive extends Provider {
|
|||
.get(`${rootPath}/items/${id}/content`)
|
||||
.auth(token)
|
||||
.request()
|
||||
.on('data', onData)
|
||||
.on('end', () => onData(null))
|
||||
.on('data', (chunk) => onData(null, chunk))
|
||||
.on('end', () => onData(null, null))
|
||||
.on('error', (err) => {
|
||||
logger.error(err, 'provider.onedrive.download.error')
|
||||
onData(err)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue