-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathBBServer_POSTReceiveHook.js
46 lines (42 loc) · 1.83 KB
/
BBServer_POSTReceiveHook.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const config = {
bitBucketUrl: '',
color: '#225159',
update: true
};
const bitBucketUpdate = (request, i) => {
const text = 'New ' + request.content.refChanges[i].type.toLowerCase() + ' on project ' + request.content.repository.project.name;
const username = request.content.changesets.values[i].toCommit.author.name;
const usermail = request.content.changesets.values[i].toCommit.author.emailAddress;
const attachment = {
author_name: username + ' (' + usermail + ')',
title: 'Repository "' + request.content.repository.name + '" in project "' + request.content.repository.project.name + '" updated',
title_link: config['bitBucketUrl'].replace(/\/$/, '') + '/projects/' + request.content.repository.project.key + '/repos/' + request.content.repository.slug + '/browse/',
text: username + ' updated ' + request.content.changesets.values[i].changes.size + ((request.content.changesets.values[i].changes.size > 1) ? ' files' : ' file') + ' on branch ' + request.content.refChanges[i].refId + '` with message:\n"' + request.content.changesets.values[i].toCommit.message + '"',
color: ((config['color'] != '') ? '#' + config['color'].replace('#', '') : '#225159')
};
return {
content: {
text: text,
attachments: [attachment]
}
};
};
class Script {
/**
* @params {object} request
*/
process_incoming_request({ request }) {
let result = {};
request.content.refChanges.forEach(function (change, i) {
if(config[change.type.toLowerCase()]) {
switch(change.type) {
case 'UPDATE':
result = bitBucketUpdate(request, i);
}
}
});
if(result.content !== undefined) {
return result;
}
}
}