From 61d225f52fbb54afdd4c3a26bbaafecee8f89655 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 1 Feb 2017 00:43:06 +0900 Subject: やった MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/service/github.ts | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'src/api/service') 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); + }); }; -- cgit v1.2.3-freya