From 2a5016865ad0ed98ab8da3364b5f006bf26f45c5 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 9 Apr 2018 17:38:22 +0900 Subject: [PATCH] Fix bug --- src/queue/processors/http/index.ts | 2 - .../processors/http/report-github-failure.ts | 24 ---------- src/server/api/service/github.ts | 46 ++++++++++++------- 3 files changed, 30 insertions(+), 42 deletions(-) delete mode 100644 src/queue/processors/http/report-github-failure.ts diff --git a/src/queue/processors/http/index.ts b/src/queue/processors/http/index.ts index 3dc259537..6f8d1dbc2 100644 --- a/src/queue/processors/http/index.ts +++ b/src/queue/processors/http/index.ts @@ -1,11 +1,9 @@ import deliver from './deliver'; import processInbox from './process-inbox'; -import reportGitHubFailure from './report-github-failure'; const handlers = { deliver, processInbox, - reportGitHubFailure }; export default (job, done) => { diff --git a/src/queue/processors/http/report-github-failure.ts b/src/queue/processors/http/report-github-failure.ts deleted file mode 100644 index 13f9afadd..000000000 --- a/src/queue/processors/http/report-github-failure.ts +++ /dev/null @@ -1,24 +0,0 @@ -import * as request from 'request-promise-native'; -import User from '../../../models/user'; -import createNote from '../../../services/note/create'; - -export default async ({ data }) => { - const asyncBot = User.findOne({ _id: data.userId }); - - // Fetch parent status - const parentStatuses = await request({ - url: `${data.parentUrl}/statuses`, - headers: { - 'User-Agent': 'misskey' - }, - json: true - }); - - const parentState = parentStatuses[0].state; - const stillFailed = parentState == 'failure' || parentState == 'error'; - const text = stillFailed ? - `**⚠️BUILD STILL FAILED⚠️**: ?[${data.message}](${data.htmlUrl})` : - `**🚨BUILD FAILED🚨**: →→→?[${data.message}](${data.htmlUrl})←←←`; - - createNote(await asyncBot, { text }); -}; diff --git a/src/server/api/service/github.ts b/src/server/api/service/github.ts index 6a327f1f7..6b1d5d25b 100644 --- a/src/server/api/service/github.ts +++ b/src/server/api/service/github.ts @@ -1,16 +1,17 @@ import * as EventEmitter from 'events'; import * as express from 'express'; -//const crypto = require('crypto'); +import * as request from 'request'; +const crypto = require('crypto'); + import User from '../../../models/user'; +import createNote from '../../../services/note/create'; import config from '../../../config'; -import { createHttp } from '../../../queue'; module.exports = async (app: express.Application) => { if (config.github_bot == null) return; const bot = await User.findOne({ - usernameLower: config.github_bot.username.toLowerCase(), - host: null + username_lower: config.github_bot.username.toLowerCase() }); if (bot == null) { @@ -18,7 +19,7 @@ module.exports = async (app: express.Application) => { return; } - const post = text => require('../endpoints/notes/create')({ text }, bot); + const post = text => createNote(bot, { text }); const handler = new EventEmitter(); @@ -26,12 +27,12 @@ module.exports = async (app: express.Application) => { // req.headers['x-hub-signature'] および // req.headers['x-github-event'] は常に string ですが、型定義の都合上 // string | string[] になっているので string を明示しています -// if ((new Buffer(req.headers['x-hub-signature'] as string)).equals(new Buffer(`sha1=${crypto.createHmac('sha1', config.github_bot.hook_secret).update(JSON.stringify(req.body)).digest('hex')}`))) { + if ((new Buffer(req.headers['x-hub-signature'] as string)).equals(new Buffer(`sha1=${crypto.createHmac('sha1', config.github_bot.hook_secret).update(JSON.stringify(req.body)).digest('hex')}`))) { handler.emit(req.headers['x-github-event'] as string, req.body); res.sendStatus(200); -// } else { -// res.sendStatus(400); -// } + } else { + res.sendStatus(400); + } }); handler.on('status', event => { @@ -42,13 +43,26 @@ module.exports = async (app: express.Application) => { const commit = event.commit; const parent = commit.parents[0]; - createHttp({ - type: 'gitHubFailureReport', - userId: bot._id, - parentUrl: parent.url, - htmlUrl: commit.html_url, - message: commit.commit.message, - }).save(); + // Fetch parent status + request({ + url: `${parent.url}/statuses`, + headers: { + 'User-Agent': 'misskey' + } + }, (err, res, body) => { + if (err) { + console.error(err); + return; + } + const parentStatuses = JSON.parse(body); + const parentState = parentStatuses[0].state; + const stillFailed = parentState == 'failure' || parentState == 'error'; + if (stillFailed) { + post(`**⚠️BUILD STILL FAILED⚠️**: ?[${commit.commit.message}](${commit.html_url})`); + } else { + post(`**🚨BUILD FAILED🚨**: →→→?[${commit.commit.message}](${commit.html_url})←←←`); + } + }); break; } });