2017-11-16 06:56:40 +00:00
|
|
|
// @flow
|
2016-08-23 06:37:01 +00:00
|
|
|
import Router from 'koa-router';
|
|
|
|
import httpErrors from 'http-errors';
|
|
|
|
import { Document, User } from '../models';
|
|
|
|
|
|
|
|
const router = new Router();
|
|
|
|
|
2017-04-27 04:47:03 +00:00
|
|
|
router.post('hooks.slack', async ctx => {
|
|
|
|
const { token, user_id, text } = ctx.body;
|
2016-08-23 06:37:01 +00:00
|
|
|
ctx.assertPresent(token, 'token is required');
|
|
|
|
ctx.assertPresent(user_id, 'user_id is required');
|
|
|
|
ctx.assertPresent(text, 'text is required');
|
|
|
|
|
2017-04-27 04:47:03 +00:00
|
|
|
if (token !== process.env.SLACK_VERIFICATION_TOKEN)
|
|
|
|
throw httpErrors.BadRequest('Invalid token');
|
2016-08-23 06:37:01 +00:00
|
|
|
|
|
|
|
const user = await User.find({
|
|
|
|
where: {
|
|
|
|
slackId: user_id,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
if (!user) throw httpErrors.BadRequest('Invalid user');
|
|
|
|
|
|
|
|
const documents = await Document.searchForUser(user, text, {
|
|
|
|
limit: 5,
|
|
|
|
});
|
|
|
|
|
2017-11-20 07:49:27 +00:00
|
|
|
if (documents) {
|
|
|
|
const results = [];
|
|
|
|
let number = 1;
|
|
|
|
for (const document of documents) {
|
|
|
|
results.push(
|
|
|
|
`${number}. <${process.env.URL}${document.getUrl()}|${document.title}>`
|
|
|
|
);
|
|
|
|
number += 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
ctx.body = {
|
|
|
|
text: 'Search results:',
|
|
|
|
attachments: [
|
|
|
|
{
|
|
|
|
text: results.join('\n'),
|
|
|
|
color: '#3AA3E3',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
};
|
|
|
|
} else {
|
|
|
|
ctx.body = {
|
|
|
|
text: 'No search results',
|
|
|
|
};
|
2016-08-23 06:37:01 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
export default router;
|