Browse Source

create reciever file and remove from boltServices

kaori 5 years ago
parent
commit
207fc3e1c8

+ 0 - 1
src/server/routes/apiv3/slack-bot.js

@@ -24,7 +24,6 @@ module.exports = (crowi) => {
         }
       }
 
-
       init(app) {
         this.bolt = app;
       }

+ 83 - 0
src/server/service/slack-bot-reciever.js

@@ -0,0 +1,83 @@
+const { EventEmitter } = require('events');
+const { createServer } = require('http');
+
+const express = require('express');
+
+/**
+ * the service class of SlackNotificationService
+ */
+class BoltRecieverService extends EventEmitter {
+
+  constructor(signingSecret, endpoints) {
+    super();
+    this.app = express();
+    this.server = createServer(this.app);
+
+    for (const endpoint of endpoints) {
+      this.app.post(endpoint, this.requestHandler.bind(this));
+    }
+  }
+
+  init(app) {
+    this.bolt = app;
+  }
+
+  start(port) {
+    return new Promise((resolve, reject) => {
+      try {
+        this.server.listen(port, () => {
+          resolve(this.server);
+        });
+      }
+      catch (error) {
+        reject(error);
+      }
+    });
+  }
+
+  stop() {
+    return new Promise((resolve, reject) => {
+      this.server.close((error) => {
+        if (error) {
+          reject(error);
+          return;
+        }
+        resolve();
+      });
+    });
+  }
+
+  // This is a very simple implementation. Look at the ExpressReceiver source for more detail
+  async requestHandler(req, res) {
+    let ackCalled = false;
+    // Assume parseBody function exists to parse incoming requests
+    const parsedReq = parseBody(req);
+    const event = {
+      body: parsedReq.body,
+      // Receivers are responsible for handling acknowledgements
+      // `ack` should be prepared to be called multiple times and
+      // possibly with `response` as an error
+      ack: (response) => {
+        if (ackCalled) {
+          return;
+        }
+
+        if (response instanceof Error) {
+          res.status(500).send();
+        }
+        else if (!response) {
+          res.send('');
+        }
+        else {
+          res.send(response);
+        }
+
+        ackCalled = true;
+      },
+    };
+    await this.bolt.processEvent(event);
+  }
+
+}
+
+module.exports = BoltRecieverService;

+ 5 - 75
src/server/service/slack-bot.js

@@ -1,92 +1,22 @@
 const { EventEmitter } = require('events');
-const { createServer } = require('http');
 const { App } = require('@slack/bolt');
 
-const express = require('express');
 
 /**
  * the service class of SlackNotificationService
  */
 class BoltService extends EventEmitter {
 
-  constructor(signingSecret, endpoints) {
-    super();
-    this.app = express();
-    this.server = createServer(this.app);
+  getBoltAppInstance() {
+    const receiver = new BoltService(process.env.SLACK_SIGNING_SECRET, '/');
 
-    for (const endpoint of endpoints) {
-      this.app.post(endpoint, this.requestHandler.bind(this));
-    }
-  }
-
-
-  init(app) {
-    this.bolt = app;
-  }
-
-  start(port) {
-    return new Promise((resolve, reject) => {
-      try {
-        this.server.listen(port, () => {
-          resolve(this.server);
-        });
-      }
-      catch (error) {
-        reject(error);
-      }
-    });
-  }
-
-  stop() {
-    return new Promise((resolve, reject) => {
-      this.server.close((error) => {
-        if (error) {
-          reject(error);
-          return;
-        }
-        resolve();
-      });
-    });
-  }
-
-  // This is a very simple implementation. Look at the ExpressReceiver source for more detail
-  async requestHandler(req, res) {
-    let ackCalled = false;
-    // Assume parseBody function exists to parse incoming requests
-    const parsedReq = parseBody(req);
-    const event = {
-      body: parsedReq.body,
-      // Receivers are responsible for handling acknowledgements
-      // `ack` should be prepared to be called multiple times and
-      // possibly with `response` as an error
-      ack: (response) => {
-        if (ackCalled) {
-          return;
-        }
-
-        if (response instanceof Error) {
-          res.status(500).send();
-        }
-        else if (!response) {
-          res.send('');
-        }
-        else {
-          res.send(response);
-        }
-
-        ackCalled = true;
-      },
-    };
-    await this.bolt.processEvent(event);
-
-    const receiver = new ReceiverClass(process.env.SLACK_SIGNING_SECRET, '/');
-
-    const app = new App({
+    const appInstance = new App({
       token: process.env.SLACK_BOT_TOKEN,
       receiver,
     });
-  }
 
+    return appInstance;
+  }
 
 }