From 420663c149865ee7d7e2adc0b1fdd64382e3b041 Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Thu, 24 Nov 2022 14:10:22 +0200 Subject: [PATCH] Hotfix 2 crashy boogaloo --- .../creature/archive/ArchiveCreatureFiles.js | 8 ++++++- app/imports/api/files/UserImages.js | 7 +++++- app/imports/api/files/client/s3FileStorage.js | 24 +++++++++++++++++++ app/imports/api/files/server/s3.js | 5 ---- .../api/files/{ => server}/s3FileStorage.js | 20 +++++++--------- 5 files changed, 45 insertions(+), 19 deletions(-) create mode 100644 app/imports/api/files/client/s3FileStorage.js delete mode 100644 app/imports/api/files/server/s3.js rename app/imports/api/files/{ => server}/s3FileStorage.js (95%) diff --git a/app/imports/api/creature/archive/ArchiveCreatureFiles.js b/app/imports/api/creature/archive/ArchiveCreatureFiles.js index c0d1094e..044e6158 100644 --- a/app/imports/api/creature/archive/ArchiveCreatureFiles.js +++ b/app/imports/api/creature/archive/ArchiveCreatureFiles.js @@ -1,8 +1,14 @@ -import { createS3FilesCollection } from '/imports/api/files/s3FileStorage.js'; + import SimpleSchema from 'simpl-schema'; import { incrementFileStorageUsed } from '/imports/api/users/methods/updateFileStorageUsed.js'; import { CreaturePropertySchema } from '/imports/api/creature/creatureProperties/CreatureProperties.js'; import { CreatureSchema } from '/imports/api/creature/creatures/Creatures.js'; +let createS3FilesCollection; +if (Meteor.isServer) { + createS3FilesCollection = require('/imports/api/files/server/s3FileStorage.js').createS3FilesCollection +} else { + createS3FilesCollection = require('/imports/api/files/client/s3FileStorage.js').createS3FilesCollection +} const ArchiveCreatureFiles = createS3FilesCollection({ collectionName: 'archiveCreatureFiles', diff --git a/app/imports/api/files/UserImages.js b/app/imports/api/files/UserImages.js index 9638d2f0..057c48a0 100644 --- a/app/imports/api/files/UserImages.js +++ b/app/imports/api/files/UserImages.js @@ -1,4 +1,9 @@ -import { createS3FilesCollection } from '/imports/api/files/s3FileStorage.js'; +let createS3FilesCollection; +if (Meteor.isServer) { + createS3FilesCollection = require('/imports/api/files/server/s3FileStorage.js').createS3FilesCollection +} else { + createS3FilesCollection = require('/imports/api/files/client/s3FileStorage.js').createS3FilesCollection +} const UserImages = createS3FilesCollection({ collectionName: 'userImages', diff --git a/app/imports/api/files/client/s3FileStorage.js b/app/imports/api/files/client/s3FileStorage.js new file mode 100644 index 00000000..ce2777cc --- /dev/null +++ b/app/imports/api/files/client/s3FileStorage.js @@ -0,0 +1,24 @@ +// https://github.com/VeliovGroup/Meteor-Files/blob/master/docs/aws-s3-integration.md +import { FilesCollection } from 'meteor/ostrio:files'; + +const createS3FilesCollection = function ({ + collectionName, + storagePath, + onBeforeUpload, + onAfterUpload, + debug,// = !Meteor.isProduction, + allowClientCode = false, +}) { + const collection = new FilesCollection({ + collectionName, + storagePath, + onBeforeUpload, + onAfterUpload, + debug, + allowClientCode, + }); + + return collection; +} + +export { createS3FilesCollection }; diff --git a/app/imports/api/files/server/s3.js b/app/imports/api/files/server/s3.js deleted file mode 100644 index 46a8e8a9..00000000 --- a/app/imports/api/files/server/s3.js +++ /dev/null @@ -1,5 +0,0 @@ -import S3 from 'aws-sdk/clients/s3'; - -export default function () { - return new S3(...arguments); -} diff --git a/app/imports/api/files/s3FileStorage.js b/app/imports/api/files/server/s3FileStorage.js similarity index 95% rename from app/imports/api/files/s3FileStorage.js rename to app/imports/api/files/server/s3FileStorage.js index c26d13bc..27fbed67 100644 --- a/app/imports/api/files/s3FileStorage.js +++ b/app/imports/api/files/server/s3FileStorage.js @@ -4,9 +4,7 @@ import { each, clone } from 'lodash'; import { Random } from 'meteor/random'; import { FilesCollection } from 'meteor/ostrio:files'; import stream from 'stream'; -if (Meteor.isServer) { - import S3 from '/imports/api/files/server/s3.js'; -} +import S3 from 'aws-sdk/clients/s3'; /* See fs-extra and graceful-fs NPM packages */ /* For better i/o performance */ @@ -31,9 +29,9 @@ let createS3FilesCollection; /* Check settings existence in `Meteor.settings` */ /* This is the best practice for app security */ -if (Meteor.isServer && Meteor.settings.useS3) { +if (Meteor.settings.useS3) { // Create a new S3 object - const s3 = S3({ + const s3 = new S3({ accessKeyId: s3Conf.key, secretAccessKey: s3Conf.secret, endpoint: s3Conf.endpoint, @@ -236,13 +234,11 @@ if (Meteor.isServer && Meteor.settings.useS3) { allowClientCode, }); - if (Meteor.isServer) { - // Use the normal file system to read files - collection.readJSONFile = async function (file) { - const fileString = await fsp.readFile(file.path, 'utf8'); - return JSON.parse(fileString); - }; - } + // Use the normal file system to read files + collection.readJSONFile = async function (file) { + const fileString = await fsp.readFile(file.path, 'utf8'); + return JSON.parse(fileString); + }; return collection; }