itizawa 5 лет назад
Родитель
Сommit
f83bea3b9f

+ 1 - 2
src/server/crowi/index.js

@@ -547,9 +547,8 @@ Crowi.prototype.setUpApp = async function() {
  * setup FileUploadService
  */
 Crowi.prototype.setUpFileUpload = async function() {
-  const FileUploadService = require('../service/file-uploader')(this);
   if (this.fileUploadService == null) {
-    this.fileUploadService = FileUploadService.getUploader(this);
+    this.fileUploadService = require('../service/file-uploader')(this);
 
     // add as a message handler
     if (this.s2sMessagingService != null) {

+ 3 - 55
src/server/service/file-uploader/index.js

@@ -1,8 +1,5 @@
 const logger = require('@alias/logger')('growi:service:FileUploaderServise');
 
-const S2sMessage = require('../../models/vo/s2s-message');
-const S2sMessageHandlable = require('../s2s-messaging/handlable');
-
 const envToModuleMappings = {
   aws:     'aws',
   local:   'local',
@@ -14,57 +11,7 @@ const envToModuleMappings = {
   gcs:     'gcs',
 };
 
-class FileUploadServiceFactory extends S2sMessageHandlable {
-
-  constructor(crowi) {
-    super();
-
-    this.configManager = crowi.configManager;
-    this.s2sMessagingService = crowi.s2sMessagingService;
-    this.appService = crowi.appService;
-    this.xssService = crowi.xssService;
-
-    this.lastLoadedAt = null;
-  }
-
-  /**
-   * @inheritdoc
-   */
-  shouldHandleS2sMessage(s2sMessage) {
-    const { eventName, updatedAt } = s2sMessage;
-    if (eventName !== 'fileUploadServiceUpdated' || updatedAt == null) {
-      return false;
-    }
-
-    return this.lastLoadedAt == null || this.lastLoadedAt < new Date(s2sMessage.updatedAt);
-  }
-
-  /**
-   * @inheritdoc
-   */
-  async handleS2sMessage(s2sMessage) {
-    const { configManager } = this;
-
-    logger.info('Reset fileupload service by pubsub notification');
-    await configManager.loadConfigs();
-    this.initCustomCss();
-    this.initCustomTitle();
-  }
-
-  async publishUpdatedMessage() {
-    const { s2sMessagingService } = this;
-
-    if (s2sMessagingService != null) {
-      const s2sMessage = new S2sMessage('customizeServiceUpdated', { updatedAt: new Date() });
-
-      try {
-        await s2sMessagingService.publish(s2sMessage);
-      }
-      catch (e) {
-        logger.error('Failed to publish update message with S2sMessagingService: ', e.message);
-      }
-    }
-  }
+class FileUploadServiceFactory {
 
   initializeUploader(crowi) {
     const method = envToModuleMappings[process.env.FILE_UPLOAD] || 'aws';
@@ -88,5 +35,6 @@ class FileUploadServiceFactory extends S2sMessageHandlable {
 
 
 module.exports = (crowi) => {
-  return new FileUploadServiceFactory(crowi);
+  const factory = new FileUploadServiceFactory(crowi);
+  return factory.getUploader(crowi);
 };

+ 52 - 1
src/server/service/file-uploader/uploader.js

@@ -1,11 +1,22 @@
+const logger = require('@alias/logger')('growi:service:FileUploader');
+
 // file uploader virtual class
 // 各アップローダーで共通のメソッドはここで定義する
+const S2sMessage = require('../../models/vo/s2s-message');
+const S2sMessageHandlable = require('../s2s-messaging/handlable');
 
-class Uploader {
+class Uploader extends S2sMessageHandlable {
 
   constructor(crowi) {
+    super();
+
     this.crowi = crowi;
     this.configManager = crowi.configManager;
+    this.s2sMessagingService = crowi.s2sMessagingService;
+    this.appService = crowi.appService;
+    this.xssService = crowi.xssService;
+
+    this.lastLoadedAt = null;
   }
 
   getIsUploadable() {
@@ -24,6 +35,46 @@ class Uploader {
     return !!this.configManager.getConfig('crowi', 'app:fileUpload');
   }
 
+  /**
+   * @inheritdoc
+   */
+  shouldHandleS2sMessage(s2sMessage) {
+    const { eventName, updatedAt } = s2sMessage;
+    if (eventName !== 'fileUploadServiceUpdated' || updatedAt == null) {
+      return false;
+    }
+
+    return this.lastLoadedAt == null || this.lastLoadedAt < new Date(s2sMessage.updatedAt);
+  }
+
+  /**
+   * @inheritdoc
+   */
+  async handleS2sMessage(s2sMessage) {
+    const { configManager } = this;
+
+    logger.info('Reset fileupload service by pubsub notification');
+    await configManager.loadConfigs();
+    this.initCustomCss();
+    this.initCustomTitle();
+  }
+
+
+  async publishUpdatedMessage() {
+    const { s2sMessagingService } = this;
+
+    if (s2sMessagingService != null) {
+      const s2sMessage = new S2sMessage('customizeServiceUpdated', { updatedAt: new Date() });
+
+      try {
+        await s2sMessagingService.publish(s2sMessage);
+      }
+      catch (e) {
+        logger.error('Failed to publish update message with S2sMessagingService: ', e.message);
+      }
+    }
+  }
+
   /**
    * Check files size limits for all uploaders
    *