Fix bug
This commit is contained in:
		
							parent
							
								
									64547965b4
								
							
						
					
					
						commit
						2a5016865a
					
				
					 3 changed files with 30 additions and 42 deletions
				
			
		| 
						 | 
					@ -1,11 +1,9 @@
 | 
				
			||||||
import deliver from './deliver';
 | 
					import deliver from './deliver';
 | 
				
			||||||
import processInbox from './process-inbox';
 | 
					import processInbox from './process-inbox';
 | 
				
			||||||
import reportGitHubFailure from './report-github-failure';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
const handlers = {
 | 
					const handlers = {
 | 
				
			||||||
	deliver,
 | 
						deliver,
 | 
				
			||||||
	processInbox,
 | 
						processInbox,
 | 
				
			||||||
	reportGitHubFailure
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default (job, done) => {
 | 
					export default (job, done) => {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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 });
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,16 +1,17 @@
 | 
				
			||||||
import * as EventEmitter from 'events';
 | 
					import * as EventEmitter from 'events';
 | 
				
			||||||
import * as express from 'express';
 | 
					import * as express from 'express';
 | 
				
			||||||
//const crypto = require('crypto');
 | 
					import * as request from 'request';
 | 
				
			||||||
 | 
					const crypto = require('crypto');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import User from '../../../models/user';
 | 
					import User from '../../../models/user';
 | 
				
			||||||
 | 
					import createNote from '../../../services/note/create';
 | 
				
			||||||
import config from '../../../config';
 | 
					import config from '../../../config';
 | 
				
			||||||
import { createHttp } from '../../../queue';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = async (app: express.Application) => {
 | 
					module.exports = async (app: express.Application) => {
 | 
				
			||||||
	if (config.github_bot == null) return;
 | 
						if (config.github_bot == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const bot = await User.findOne({
 | 
						const bot = await User.findOne({
 | 
				
			||||||
		usernameLower: config.github_bot.username.toLowerCase(),
 | 
							username_lower: config.github_bot.username.toLowerCase()
 | 
				
			||||||
		host: null
 | 
					 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bot == null) {
 | 
						if (bot == null) {
 | 
				
			||||||
| 
						 | 
					@ -18,7 +19,7 @@ module.exports = async (app: express.Application) => {
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const post = text => require('../endpoints/notes/create')({ text }, bot);
 | 
						const post = text => createNote(bot, { text });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const handler = new EventEmitter();
 | 
						const handler = new EventEmitter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,12 +27,12 @@ module.exports = async (app: express.Application) => {
 | 
				
			||||||
		// req.headers['x-hub-signature'] および
 | 
							// req.headers['x-hub-signature'] および
 | 
				
			||||||
		// req.headers['x-github-event'] は常に string ですが、型定義の都合上
 | 
							// req.headers['x-github-event'] は常に string ですが、型定義の都合上
 | 
				
			||||||
		// string | string[] になっているので 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);
 | 
								handler.emit(req.headers['x-github-event'] as string, req.body);
 | 
				
			||||||
			res.sendStatus(200);
 | 
								res.sendStatus(200);
 | 
				
			||||||
//		} else {
 | 
							} else {
 | 
				
			||||||
//			res.sendStatus(400);
 | 
								res.sendStatus(400);
 | 
				
			||||||
//		}
 | 
							}
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	handler.on('status', event => {
 | 
						handler.on('status', event => {
 | 
				
			||||||
| 
						 | 
					@ -42,13 +43,26 @@ module.exports = async (app: express.Application) => {
 | 
				
			||||||
				const commit = event.commit;
 | 
									const commit = event.commit;
 | 
				
			||||||
				const parent = commit.parents[0];
 | 
									const parent = commit.parents[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				createHttp({
 | 
									// Fetch parent status
 | 
				
			||||||
					type: 'gitHubFailureReport',
 | 
									request({
 | 
				
			||||||
					userId: bot._id,
 | 
										url: `${parent.url}/statuses`,
 | 
				
			||||||
					parentUrl: parent.url,
 | 
										headers: {
 | 
				
			||||||
					htmlUrl: commit.html_url,
 | 
											'User-Agent': 'misskey'
 | 
				
			||||||
					message: commit.commit.message,
 | 
										}
 | 
				
			||||||
				}).save();
 | 
									}, (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;
 | 
									break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue