This commit is contained in:
Trym Lund Flogard 2021-06-05 13:50:02 +02:00
parent d363b4a3d0
commit b7837011bd
3 changed files with 17 additions and 14 deletions

14
dist/index.js vendored
View File

@ -606,18 +606,20 @@ class NextcloudClient {
core.info(`Transferring file... (${file})`);
const fileStat = await fs.stat(file);
const fileStream = fsSync.createReadStream(file);
const fileStreamPromise = new Promise((resolve, reject) => {
fileStream.on('error', e => reject(e)).on('close', () => resolve());
});
const remoteStream = this.davClient.createWriteStream(remoteFilePath, {
headers: { 'Content-Length': fileStat.size.toString() }
});
const reamteStreamPromise = new Promise((resolve, reject) => {
remoteStream.on('error', e => reject(e)).on('finish', () => resolve());
});
fileStream.pipe(remoteStream);
// see: https://github.com/nodejs/node/issues/22088
const timer = setTimeout(() => { }, 20000);
await new Promise((resolve, reject) => {
fileStream.on('error', e => reject(e)).on('close', () => resolve());
});
await new Promise((resolve, reject) => {
remoteStream.on('error', e => reject(e)).on('close', () => resolve());
});
await fileStreamPromise;
await reamteStreamPromise;
clearTimeout(timer);
return remoteFilePath;
}

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -162,21 +162,22 @@ export class NextcloudClient {
const fileStat = await fs.stat(file)
const fileStream = fsSync.createReadStream(file)
const fileStreamPromise = new Promise<void>((resolve, reject) => {
fileStream.on('error', e => reject(e)).on('close', () => resolve())
})
const remoteStream = this.davClient.createWriteStream(remoteFilePath, {
headers: { 'Content-Length': fileStat.size.toString() }
})
const reamteStreamPromise = new Promise<void>((resolve, reject) => {
remoteStream.on('error', e => reject(e)).on('finish', () => resolve())
})
fileStream.pipe(remoteStream)
// see: https://github.com/nodejs/node/issues/22088
const timer = setTimeout(() => {}, 20_000);
await new Promise<void>((resolve, reject) => {
fileStream.on('error', e => reject(e)).on('close', () => resolve())
})
await new Promise<void>((resolve, reject) => {
remoteStream.on('error', e => reject(e)).on('close', () => resolve())
})
await fileStreamPromise
await reamteStreamPromise
clearTimeout(timer);
return remoteFilePath