diff --git a/packages/component-mts-package/src/PackageManager.js b/packages/component-mts-package/src/PackageManager.js index 967985f3a45c6170fbd6a4b5d2d627ebe8cac633..b98dbf10308c84b927b10d3f670b285a1b6ca8b7 100644 --- a/packages/component-mts-package/src/PackageManager.js +++ b/packages/component-mts-package/src/PackageManager.js @@ -17,30 +17,27 @@ const createFilesPackage = (s3Config, archiver = nodeArchiver) => { }) const s3 = new AWS.S3() const asyncGetObject = promisify(s3.getObject.bind(s3)) - const asyncListObjects = promisify(s3.listObjects.bind(s3)) return async ({ fragment, fileTypes, xmlFile, isEQA = false }) => { - const { id } = fragment + const { files = {} } = fragment let packageName = get(xmlFile, 'name', '').replace('.xml', '') if (isEQA) { packageName = `ACCEPTED_${packageName}` } try { - const params = { - Bucket: s3Config.bucket, - Prefix: `${id}`, - } - const s3Items = await asyncListObjects(params) - if (s3Items) { + const s3FileIDs = Object.values(files) + .reduce((acc, f) => [...acc, ...f], []) + .map(f => f.id) + + if (s3FileIDs) { const s3Files = await Promise.all( - s3Items.Contents.map(content => + s3FileIDs.map(fileID => asyncGetObject({ Bucket: s3Config.bucket, - Key: content.Key, + Key: fileID, }), ), ) - if (s3Files) { const packageOutput = fs.createWriteStream(`${packageName}.zip`) const archive = archiver('zip') diff --git a/packages/component-mts-package/tests/MTS.test.js b/packages/component-mts-package/tests/MTS.test.js index 6655fbe07f3602b353cb89be4371bde679d4ddff..42c67eafd272402699e9be402e3f9d3f1860e0a6 100644 --- a/packages/component-mts-package/tests/MTS.test.js +++ b/packages/component-mts-package/tests/MTS.test.js @@ -27,7 +27,7 @@ describe('MTS integration', () => { }) it('should contain configured journal name ', () => { - const result = MTS.composeJson(mocks.fragment) + const result = MTS.composeJson({ fragment: mocks.fragment }) expect(result).toHaveProperty( 'article.front.journal-meta.journal-title-group.journal-title._text', 'Bioinorganic Chemistry and Applications',