-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpullRequest.js
More file actions
67 lines (56 loc) · 1.58 KB
/
pullRequest.js
File metadata and controls
67 lines (56 loc) · 1.58 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const { matches, verifySignature } = require("./helpers");
function isInitialRequest(data) {
return !data.pull_request && data.hook;
}
function extractRequestParams(req, data) {
let actionType;
if (data.action === "closed") {
actionType = data.pull_request.merged
? "merged"
: "declined";
} else {
actionType = data.action;
}
return {
repositoryName: data.repository.name,
secret: req.headers["x-hub-signature-256"],
toBranch: data.pull_request.base.ref,
fromBranch: data.pull_request.head.ref,
actionType,
};
}
function extractTriggerParams(trigger) {
return {
repositoryNamePattern: trigger.params.repoName,
secret: trigger.params.secret,
toBranch: trigger.params.toBranch,
fromBranch: trigger.params.fromBranch,
actionType: trigger.params.actionType,
};
}
function requestSatisfiesTriggerConditions(triggerParams, requestParams, rawData) {
if (!matches(requestParams.repositoryName, triggerParams.repositoryNamePattern)) {
return false;
}
if (!matches(requestParams.toBranch, triggerParams.toBranch)) {
return false;
}
if (!matches(requestParams.fromBranch, triggerParams.fromBranch)) {
return false;
}
if (triggerParams.actionType
&& triggerParams.actionType !== "any"
&& triggerParams.actionType !== requestParams.actionType) {
return false;
}
if (!verifySignature(triggerParams.secret, requestParams.secret, rawData)) {
return false;
}
return true;
}
module.exports = {
isInitialRequest,
extractRequestParams,
extractTriggerParams,
requestSatisfiesTriggerConditions,
};