summaryrefslogtreecommitdiff
path: root/src/api/service
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2017-02-01 00:43:06 +0900
committersyuilo <syuilotan@yahoo.co.jp>2017-02-01 00:43:06 +0900
commit61d225f52fbb54afdd4c3a26bbaafecee8f89655 (patch)
tree7d47e31da22ad57a1210f6550c4e210248f691a1 /src/api/service
parent<WIP> #52 (diff)
downloadsharkey-61d225f52fbb54afdd4c3a26bbaafecee8f89655.tar.gz
sharkey-61d225f52fbb54afdd4c3a26bbaafecee8f89655.tar.bz2
sharkey-61d225f52fbb54afdd4c3a26bbaafecee8f89655.zip
やった
Diffstat (limited to 'src/api/service')
-rw-r--r--src/api/service/github.ts25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/api/service/github.ts b/src/api/service/github.ts
index 680c02c47a..8f7efc8ad4 100644
--- a/src/api/service/github.ts
+++ b/src/api/service/github.ts
@@ -1,10 +1,22 @@
import * as express from 'express';
const createHandler = require('github-webhook-handler');
+import User from '../models/user';
import config from '../../conf';
-module.exports = (app: express.Application) => {
+module.exports = async (app: express.Application) => {
if (config.github_bot == null) return;
+ const bot = await User.findOne({
+ username_lower: config.github_bot.username.toLowerCase()
+ });
+
+ if (bot == null) {
+ console.warn(`GitHub hook bot specified, but not found: @${config.github_bot.username}`);
+ return;
+ }
+
+ const post = text => require('../endpoints/posts/create')({ text }, bot);
+
const handler = createHandler({
path: '/hooks/github',
secret: config.github_bot.hook_secret
@@ -15,4 +27,15 @@ module.exports = (app: express.Application) => {
handler.on('*', event => {
console.dir(event);
});
+
+ handler.on('issues', event => {
+ let title: string;
+ switch (event.payload.action) {
+ case 'opened': title = 'Issueが立ちました'; break;
+ case 'closed': title = 'Issueが閉じられました'; break;
+ case 'reopened': title = 'Issueが開きました'; break;
+ }
+ const text = `${title}: ${event.payload.issue.number}「${event.payload.issue.title}」\n${event.payload.issue.url}`;
+ post(text);
+ });
};