From 61d225f52fbb54afdd4c3a26bbaafecee8f89655 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 1 Feb 2017 00:43:06 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=84=E3=81=A3=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/service/github.ts | 25 ++++++++++++++++++++++++- src/config.ts | 2 +- 2 files changed, 25 insertions(+), 2 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); + }); }; diff --git a/src/config.ts b/src/config.ts index e63e3c05ae..5b043d3498 100644 --- a/src/config.ts +++ b/src/config.ts @@ -63,7 +63,7 @@ interface ISource { }; github_bot?: { hook_secret: string; - bot_token: string; + username: string; }; }