@mieweb/wikigdrive
Version:
Google Drive to MarkDown synchronization
63 lines (62 loc) • 2.06 kB
JavaScript
import { QueueTask } from './QueueTask.js';
export class TaskFetchBinary extends QueueTask {
constructor(logger, googleDriveService, auth, fileService, file, forceDownload, mimeType, ext) {
super(logger);
Object.defineProperty(this, "logger", {
enumerable: true,
configurable: true,
writable: true,
value: logger
});
Object.defineProperty(this, "googleDriveService", {
enumerable: true,
configurable: true,
writable: true,
value: googleDriveService
});
Object.defineProperty(this, "auth", {
enumerable: true,
configurable: true,
writable: true,
value: auth
});
Object.defineProperty(this, "fileService", {
enumerable: true,
configurable: true,
writable: true,
value: fileService
});
Object.defineProperty(this, "file", {
enumerable: true,
configurable: true,
writable: true,
value: file
});
Object.defineProperty(this, "forceDownload", {
enumerable: true,
configurable: true,
writable: true,
value: forceDownload
});
Object.defineProperty(this, "mimeType", {
enumerable: true,
configurable: true,
writable: true,
value: mimeType
});
Object.defineProperty(this, "ext", {
enumerable: true,
configurable: true,
writable: true,
value: ext
});
}
async run() {
const assetPath = this.file.id + '.' + this.ext;
if (await this.fileService.exists(assetPath) && !this.forceDownload) {
return [];
}
await this.googleDriveService.download(this.auth, { id: this.file.id, mimeType: this.mimeType, name: this.file.name }, this.fileService.createWriteStream(assetPath));
return [];
}
}