Мы пытаемся загрузить файл из OneDrive в локальный буфер, используя библиотеку microsoft-graph-client. Когда вызывается эта функция, поток passThrough, возвращаемый клиентом, генерирует очень маленькую горстку событий данных, и затем процесс существует, даже не выполняя обещание или не вызывая ошибку. Мы использовали этот же подход с другими интеграциями, которые возвращают потоки без проблем, кажется, что только поток Microsoft Graph прекращает генерировать события.
Мы пробовали on('readable')
с теми же результатами и другими подобными подходами.
Есть ли что-то в природе сквозного прохода, которое делает этот подход неосуществимым?
downloadItemContent (itemId) {
const uri = `/me/drive/items/${itemId}/content`
Logger.info(`Downloading OneDrive file at URI: ${uri}`)
return this.msGraphClient
.api(uri)
.responseType(MicrosoftGraph.ResponseType.STREAM)
.get()
.then((result) => {
return new Promise((resolve, reject) => {
const chunks = []
result.on('data', function (d) {
chunks.push(d)
})
result.on('end', function () {
return resolve(Buffer.concat(chunks))
})
result.on('error', function (err) {
return reject(err)
})
})
})
.catch((err) => {
Logger.error('Unable to download content from OneDrive', { status: err.code, error: err })
return Promise.reject(err)
})
}
}