Browse Source

throw err

yusuketk 5 years ago
parent
commit
e7b9656ddf
2 changed files with 23 additions and 7 deletions
  1. 13 2
      src/server/routes/apiv3/slack-bot.js
  2. 10 5
      src/server/service/bolt.js

+ 13 - 2
src/server/routes/apiv3/slack-bot.js

@@ -2,13 +2,24 @@
 const express = require('express');
 const express = require('express');
 
 
 const router = express.Router();
 const router = express.Router();
+const ErrorV3 = require('../../models/vo/error-apiv3');
 
 
 module.exports = (crowi) => {
 module.exports = (crowi) => {
   this.app = crowi.express;
   this.app = crowi.express;
   const { boltService } = crowi;
   const { boltService } = crowi;
 
 
-  router.post('/', boltService.receiver.requestHandler.bind(boltService.receiver), (req, res) => {
-
+  router.post('/', async(req, res) => {
+    try {
+      const response = await boltService.receiver.requestHandler.bind(boltService.receiver)(req, res);
+      if (response !== null) {
+        res.send(response);
+      }
+    }
+    catch (err) {
+      console.log('catch');
+      console.log(err);
+      return res.apiv3Err(new ErrorV3(`Error:Slack-Bot:${err}`), 500);
+    }
     // for verification request URL on Event Subscriptions
     // for verification request URL on Event Subscriptions
     res.send(req.body);
     res.send(req.body);
   });
   });

+ 10 - 5
src/server/service/bolt.js

@@ -7,25 +7,30 @@ class BoltReciever {
   }
   }
 
 
   async requestHandler(req, res) {
   async requestHandler(req, res) {
+    if (this.bolt === undefined) {
+      throw new Error('Slack bot is not setup');
+    }
+
     let ackCalled = false;
     let ackCalled = false;
     const event = {
     const event = {
       body: req.body,
       body: req.body,
       ack: (response) => {
       ack: (response) => {
         if (ackCalled) {
         if (ackCalled) {
-          return;
+          return null;
         }
         }
 
 
+        ackCalled = true;
+
         if (response instanceof Error) {
         if (response instanceof Error) {
-          res.status(500).send();
+          throw new Error();
         }
         }
         else if (!response) {
         else if (!response) {
-          res.send('');
+          return;
         }
         }
         else {
         else {
-          res.send(response);
+          return response;
         }
         }
 
 
-        ackCalled = true;
       },
       },
     };
     };