|
|
@@ -5,7 +5,9 @@ import axios from 'axios';
|
|
|
|
|
|
import { WebAPICallResult } from '@slack/web-api';
|
|
|
|
|
|
-import { verifyGrowiToSlackRequest, getConnectionStatuses, relationTestToSlack } from '@growi/slack';
|
|
|
+import {
|
|
|
+ verifyGrowiToSlackRequest, getConnectionStatuses, relationTestToSlack, generateWebClient,
|
|
|
+} from '@growi/slack';
|
|
|
|
|
|
import { GrowiReq } from '~/interfaces/growi-to-slack/growi-req';
|
|
|
import { InstallationRepository } from '~/repositories/installation';
|
|
|
@@ -152,8 +154,37 @@ export class GrowiToSlackCtrl {
|
|
|
@UseBefore(verifyGrowiToSlackRequest)
|
|
|
async postResult(@Req() req: GrowiReq, @Res() res: Res): Promise<void|string|Res|WebAPICallResult> {
|
|
|
const { tokenGtoPs } = req;
|
|
|
- console.log(tokenGtoPs);
|
|
|
|
|
|
+ if (tokenGtoPs.length !== 1) {
|
|
|
+ return res.status(400).send({ message: 'tokenGtoPs is invalid' });
|
|
|
+ }
|
|
|
+
|
|
|
+ const tokenGtoP = tokenGtoPs[0];
|
|
|
+
|
|
|
+ // retrieve relation with Installation
|
|
|
+ const relation = await this.relationRepository.createQueryBuilder('relation')
|
|
|
+ .where('tokenGtoP = :token', { token: tokenGtoP })
|
|
|
+ .leftJoinAndSelect('relation.installation', 'installation')
|
|
|
+ .getOne();
|
|
|
+
|
|
|
+ if (relation == null) {
|
|
|
+ return res.status(400).send({ message: 'relation is invalid' });
|
|
|
+ }
|
|
|
+
|
|
|
+ const token = relation.installation.data.bot?.token;
|
|
|
+ if (token == null) {
|
|
|
+ return res.status(400).send({ message: 'installation is invalid' });
|
|
|
+ }
|
|
|
+
|
|
|
+ const client = generateWebClient(token);
|
|
|
+ await client.chat.postMessage({
|
|
|
+ channel: req.body.channel,
|
|
|
+ blocks: req.body.blocks,
|
|
|
+ });
|
|
|
+
|
|
|
+ logger.debug('postMessage is success');
|
|
|
+
|
|
|
+ return res.end();
|
|
|
}
|
|
|
|
|
|
}
|