Created
July 29, 2021 06:23
-
-
Save danielgranat/741423257d4c32f4b2c29502b8af96c1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var fs = require('fs'); | |
const https = require('https'); | |
const AWS = require('aws-sdk'); | |
var wd = new AWS.WorkDocs(); | |
async function downloadFolder(folderName, folderId) { | |
let limit = 100; | |
console.log('Start Download folder:', folderId); | |
if (!fs.existsSync(folderName)) { | |
fs.mkdirSync(folderName); | |
} | |
let marker; | |
do { | |
let folderContents = await wd.describeFolderContents({ FolderId: folderId, Marker: marker, Limit: limit }).promise() | |
marker = folderContents.Marker; | |
console.log('copy files', folderContents.Documents.length, marker) | |
for (let folder of folderContents.Folders) { | |
await downloadFolder(`${folderName}/${folder.Name}`, folder.Id); | |
} | |
for (let doc of folderContents.Documents) { | |
let name = doc.LatestVersionMetadata.Name; | |
let versionId = doc.LatestVersionMetadata.Id; | |
let docVersion = await wd.getDocumentVersion({ DocumentId: doc.Id, VersionId: versionId, IncludeCustomMetadata: true, Fields: 'SOURCE' }).promise() | |
console.log(name); | |
await new Promise((resolve, reject) => { | |
const file = fs.createWriteStream(`${folderName}/${name}`); | |
const request = https.get(docVersion.Metadata.Source.ORIGINAL, function (response) { | |
response.pipe(file); | |
response.on('end', () => resolve(true)) | |
}); | |
request.on('error', reject); | |
return request; | |
}); | |
} | |
} while (folderContents.Marker); | |
console.log('Finishj Download folder:', folderId); | |
} | |
(async () => { | |
const args = process.argv.slice(2); | |
const dir = args[0]; | |
const folderId = args[1]; | |
downloadFolder(dir, folderId); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment