From 2a5016865ad0ed98ab8da3364b5f006bf26f45c5 Mon Sep 17 00:00:00 2001
From: syuilo <syuilotan@yahoo.co.jp>
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 3dc2595374..6f8d1dbc2b 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 13f9afadd3..0000000000
--- 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 6a327f1f76..6b1d5d25be 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;
 		}
 	});