diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2017-02-01 00:43:06 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2017-02-01 00:43:06 +0900 |
| commit | 61d225f52fbb54afdd4c3a26bbaafecee8f89655 (patch) | |
| tree | 7d47e31da22ad57a1210f6550c4e210248f691a1 /src/api/service | |
| parent | <WIP> #52 (diff) | |
| download | sharkey-61d225f52fbb54afdd4c3a26bbaafecee8f89655.tar.gz sharkey-61d225f52fbb54afdd4c3a26bbaafecee8f89655.tar.bz2 sharkey-61d225f52fbb54afdd4c3a26bbaafecee8f89655.zip | |
やった
Diffstat (limited to 'src/api/service')
| -rw-r--r-- | src/api/service/github.ts | 25 |
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); + }); }; |