Last active
August 11, 2016 12:02
Revisions
-
khobbits revised this gist
Aug 11, 2016 . 1 changed file with 77 additions and 24 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -196,40 +196,93 @@ const githubEvents = { }; }, */ /* Create branch/tag */ create(request) { const user = request.content.sender; var text = '**Created new ' + request.content.ref_type + ": ["+request.content.repository.full_name+"]("+request.content.repository.url+"):" + request.content.ref.split('/').pop() + "**"; return { content: { icon_url: user.avatar_url, alias: user.login, attachments: [ { text: text, fields: [] } ] } }; }, /* Delete branch/tag */ delete(request) { const user = request.content.sender; var text = '**Deleted ' + request.content.ref_type + ": ["+request.content.repository.full_name+"]("+request.content.repository.url+"):" + request.content.ref.split('/').pop() + "**"; return { content: { icon_url: user.avatar_url, alias: user.login, attachments: [ { text: text, fields: [] } ] } }; }, /* PUSH TO REPO */ push(request) { const user = request.content.sender; var commits = request.content.commits; var text = '**Pushed to ' + "["+request.content.repository.full_name+"]("+request.content.repository.url+"):" + request.content.ref.split('/').pop() + "**\n\n"; var output = []; if (commits.length == 0 && request.content.head_commit != null) { commits.push(request.content.head_commit); text += 'Set tag/branch reference to:' + "\n"; } else if (commits.length == 0) { text += 'Set tag/branch reference to: ' + request.content.after; } for (var i = 0; i < commits.length; i++) { var commit = commits[i]; var shortID = commit.id.substring(0,7); var a = '[' + shortID + '](' + commit.url + ') - '; var commitMessages = commit.message.split('\n') if (commits.length > 1) { a += commitMessages.shift(); } else if (commitMessages.length > 5) { a += commitMessages.shift(); a += "..."; } else { a += commit.message; } output.push( a ); } text += output.reverse().slice(0,4).join('\n'); if (output.length > 4) { text += "\n(+" + (output.length - 4) + ' commits)'; } text += "\n[Diff/Full Changes]("+request.content.compare+")" return { content: { @@ -249,13 +302,13 @@ const githubEvents = { pull_request(request) { const user = request.content.sender; if (request.content.action == "opened" || request.content.action == "reopened" /*|| request.content.action == "edited" || request.content.action == "synchronize"*/) { var body = request.content.pull_request.body; /*} else if (request.content.action == "labeled") { var body = "Current labels: " + getLabelsField(request.content.pull_request.labels).value; } else if (request.content.action == "assigned" || request.content.action == "unassigned") { // Note that the issues API only gives you one assignee. var body = "Current assignee: " + request.content.pull_request.assignee.login;*/ } else if (request.content.action == "closed") { if (request.content.pull_request.merged) { var body = "Merged by: " + request.content.pull_request.merged_by.login; -
khobbits renamed this gist
Aug 10, 2016 . 1 changed file with 101 additions and 8 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,7 +1,7 @@ /* exported Script Issue events (create, edit, close, reopen, assign, label, etc) Issue comment events Push events (singular and multiple commits) */ String.prototype.capitalizeFirstLetter = function() { @@ -23,14 +23,100 @@ const getLabelsField = (labels) => { const githubEvents = { ping(request) { if (typeof request.content.repository == "undefined") { return { content: { text: '_' + request.content.organization.description + '_\n' + ':thumbsup: ' + request.content.zen } }; } else { return { content: { text: '_' + request.content.repository.full_name + '_\n' + ':thumbsup: ' + request.content.zen } }; } }, /* member */ member(request) { const user = request.content.sender; const action = request.content.action.capitalizeFirstLetter(); const text = '_' + request.content.repository.full_name + '_\n' + '**[' + action + ' member @' + request.content.member.login + "**" + '](' + request.content.member.html_url + ')'; return { content: { icon_url: user.avatar_url, alias: user.login, attachments: [ { text: text, fields: [] } ] } }; }, /* membership */ membership(request) { const user = request.content.sender; const action = request.content.action.capitalizeFirstLetter(); const text = '_' + request.content.organization.login + '/' + request.content.team.name + '_\n' + '**[' + action + ' member @' + request.content.member.login + "**" + '](' + request.content.member.html_url + ')\n\nPermission Level: ' + request.content.team.permission; return { content: { icon_url: user.avatar_url, alias: user.login, attachments: [ { text: text, fields: [] } ] } }; }, /* repository */ repository(request) { const user = request.content.sender; const action = request.content.action.capitalizeFirstLetter(); const text = '_' + request.content.repository.full_name + '_\n' + '**[' + action + ' repo ' + request.content.repository.name + "**" + '](' + request.content.repository.html_url + ')'; return { content: { icon_url: user.avatar_url, alias: user.login, attachments: [ { text: text, fields: [] } ] } }; }, /* NEW OR MODIFY ISSUE */ /* issues(request) { const user = request.content.sender; @@ -66,18 +152,21 @@ const githubEvents = { return { content: { icon_url: user.avatar_url, alias: user.login, attachments: [ { text: text, fields: [] } ] } }; }, */ /* COMMENT ON EXISTING ISSUE */ /* issue_comment(request) { const user = request.content.comment.user; @@ -95,16 +184,18 @@ const githubEvents = { return { content: { icon_url: user.avatar_url, alias: user.login, attachments: [ { text: text, fields: [] } ] } }; }, */ /* PUSH TO REPO */ push(request) { @@ -142,9 +233,10 @@ const githubEvents = { return { content: { icon_url: user.avatar_url, alias: user.login, attachments: [ { text: text, fields: [] } @@ -189,9 +281,10 @@ const githubEvents = { return { content: { icon_url: user.avatar_url, alias: user.login, attachments: [ { text: text, fields: [] } -
khobbits created this gist
Aug 10, 2016 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,218 @@ /* exported Script * Issue events (create, edit, close, reopen, assign, label, etc) * Issue comment events * Push events (singular and multiple commits) */ String.prototype.capitalizeFirstLetter = function() { return this.charAt(0).toUpperCase() + this.slice(1); } const getLabelsField = (labels) => { let labelsArray = []; labels.forEach(function(label) { labelsArray.push(label.name); }); labelsArray = labelsArray.join(', '); return { title: 'Labels', value: labelsArray, short: labelsArray.length <= 40 }; }; const githubEvents = { ping(request) { return { content: { text: '_' + request.content.repository.full_name + '_\n' + ':thumbsup: ' + request.content.zen } }; }, /* NEW OR MODIFY ISSUE */ issues(request) { const user = request.content.sender; if (request.content.action == "opened" || request.content.action == "reopened" || request.content.action == "edited") { var body = request.content.issue.body; } else if (request.content.action == "labeled") { var body = "Current labels: " + getLabelsField(request.content.issue.labels).value; } else if (request.content.action == "assigned" || request.content.action == "unassigned") { // Note that the issues API only gives you one assignee. var body = "Current assignee: " + request.content.issue.assignee.login; } else if (request.content.action == "closed") { if (request.content.issue.closed_by) { var body = "Closed by: " + request.content.issue.closed_by.login; } else { var body = "Closed."; } } else { return { error: { success: false, message: 'Unsupported issue action' } }; } const action = request.content.action.capitalizeFirstLetter(); const text = '_' + request.content.repository.full_name + '_\n' + '**[' + action + ' issue #' + request.content.issue.number + ' - ' + request.content.issue.title + "**" + '](' + request.content.issue.html_url + ')\n\n' + body; return { content: { attachments: [ { thumb_url: user.avatar_url, text: text, fields: [] } ] } }; }, /* COMMENT ON EXISTING ISSUE */ issue_comment(request) { const user = request.content.comment.user; if (request.content.action == "edited") { var action = "Edited comment "; } else { var action = "Comment " } const text = '_' + request.content.repository.full_name + '_\n' + '**[' + action + ' on issue #' + request.content.issue.number + ' - ' + request.content.issue.title + '](' + request.content.comment.html_url + ')**\n\n' + request.content.comment.body; return { content: { attachments: [ { thumb_url: user.avatar_url, text: text, fields: [] } ] } }; }, /* PUSH TO REPO */ push(request) { var commits = request.content.commits; var multi_commit = "" var is_short = true; var changeset = 'Changeset'; if ( commits.length > 1 ) { var multi_commit = " [Multiple Commits]"; var is_short = false; var changeset = changeset + 's'; var output = []; } const user = request.content.sender; var text = '**Pushed to ' + "["+request.content.repository.full_name+"]("+request.content.repository.url+"):" + request.content.ref.split('/').pop() + "**\n\n"; for (var i = 0; i < commits.length; i++) { var commit = commits[i]; var shortID = commit.id.substring(0,7); var a = '[' + shortID + '](' + commit.url + ') - ' + commit.message; if ( commits.length > 1 ) { output.push( a ); } else { var output = a; } } if (commits.length > 1) { text += output.reverse().join('\n'); } else { text += output; } return { content: { attachments: [ { thumb_url: user.avatar_url, text: text, fields: [] } ] } }; }, // End Github Push /* NEW PULL REQUEST */ pull_request(request) { const user = request.content.sender; if (request.content.action == "opened" || request.content.action == "reopened" || request.content.action == "edited" || request.content.action == "synchronize") { var body = request.content.pull_request.body; } else if (request.content.action == "labeled") { var body = "Current labels: " + getLabelsField(request.content.pull_request.labels).value; } else if (request.content.action == "assigned" || request.content.action == "unassigned") { // Note that the issues API only gives you one assignee. var body = "Current assignee: " + request.content.pull_request.assignee.login; } else if (request.content.action == "closed") { if (request.content.pull_request.merged) { var body = "Merged by: " + request.content.pull_request.merged_by.login; } else { var body = "Closed."; } } else { return { error: { success: false, message: 'Unsupported pull request action' } }; } const action = request.content.action.capitalizeFirstLetter(); const text = '_' + request.content.repository.full_name + '_\n' + '**[' + action + ' pull request #' + request.content.pull_request.number + ' - ' + request.content.pull_request.title + "**" + '](' + request.content.pull_request.html_url + ')\n\n' + body; return { content: { attachments: [ { thumb_url: user.avatar_url, text: text, fields: [] } ] } }; }, }; class Script { process_incoming_request({ request }) { const header = request.headers['x-github-event']; if (githubEvents[header]) { return githubEvents[header](request); } return { error: { success: false, message: 'Unsupported method' } }; } }