@@ -17,6 +17,11 @@ const _ = require('lodash');
17
17
const models = require ( '../models' ) ;
18
18
const EventDetector = require ( './EventDetector' ) ;
19
19
20
+ /**
21
+ * parse the issues from github webhook payload
22
+ * @param {object } issue the github issue payload
23
+ * @returns {object } the parsed issue detail
24
+ */
20
25
const parseIssue = ( issue ) => ( {
21
26
number : issue . number ,
22
27
body : issue . body ,
@@ -30,12 +35,22 @@ const parseIssue = (issue) => ({
30
35
}
31
36
} ) ;
32
37
38
+ /**
39
+ * parse the repository from github webhook payload
40
+ * @param {object } repository the github webhook repository payload
41
+ * @returns {object } the parsed repository detail
42
+ */
33
43
const parseRepository = ( repository ) => ( {
34
44
id : repository . id ,
35
45
name : repository . name ,
36
46
full_name : repository . full_name
37
47
} ) ;
38
48
49
+ /**
50
+ * parse the pull request from github webhok payload
51
+ * @param {object } data the github webhook payload
52
+ * @returns {object } the parsed pull request detail
53
+ */
39
54
const parsePullRequest = ( data ) => ( {
40
55
number : data . number ,
41
56
id : data . pull_request . id ,
@@ -50,42 +65,11 @@ const parsePullRequest = (data) => ({
50
65
} ) )
51
66
} ) ;
52
67
53
- // begin the IssueCreatedEvent
54
- const IssueCreatedEvent = {
55
- event : models . IssueCreatedEvent
56
- } ;
57
-
58
- IssueCreatedEvent . schema = Joi . object ( ) . keys ( {
59
- action : Joi . string ( ) . valid ( 'opened' ) . required ( ) ,
60
- issue : Joi . object ( ) . required ( ) ,
61
- repository : Joi . object ( ) . required ( )
62
- } ) ;
63
-
64
- IssueCreatedEvent . parse = ( data ) => ( {
65
- issue : parseIssue ( data . issue ) ,
66
- repository : parseRepository ( data . repository )
67
- } ) ;
68
-
69
- // end the IssueCreatedEvent
70
-
71
- // begin the IssueUpdatedEvent
72
- const IssueUpdatedEvent = {
73
- event : models . IssueUpdatedEvent
74
- } ;
75
-
76
- IssueUpdatedEvent . schema = Joi . object ( ) . keys ( {
77
- action : Joi . string ( ) . valid ( 'edited' ) . required ( ) ,
78
- issue : Joi . object ( ) . required ( ) ,
79
- repository : Joi . object ( ) . required ( )
80
- } ) ;
81
-
82
- IssueUpdatedEvent . parse = ( data ) => ( {
83
- issue : parseIssue ( data . issue ) ,
84
- repository : parseRepository ( data . repository )
85
- } ) ;
86
-
87
- // end the IssueUpdatedEvent
88
-
68
+ /**
69
+ * parse the comment from github webhook payload
70
+ * @param {object } data the github webhook payload
71
+ * @returns {object } the parsed comment detail
72
+ */
89
73
const parseComment = ( data ) => ( {
90
74
issue : parseIssue ( data . issue ) ,
91
75
repository : parseRepository ( data . repository ) ,
@@ -97,79 +81,93 @@ const parseComment = (data) => ({
97
81
}
98
82
}
99
83
} ) ;
100
- // begin the CommentCreatedEvent
101
- const CommentCreatedEvent = {
102
- event : models . CommentCreatedEvent
103
- } ;
104
84
105
- CommentCreatedEvent . schema = Joi . object ( ) . keys ( {
106
- action : Joi . string ( ) . valid ( 'created' ) . required ( ) ,
107
- issue : Joi . object ( ) . required ( ) ,
108
- repository : Joi . object ( ) . required ( ) ,
109
- comment : Joi . object ( ) . required ( )
110
- } ) ;
85
+ // definition of issue created event
86
+ const IssueCreatedEvent = {
87
+ event : models . IssueCreatedEvent ,
88
+ schema : Joi . object ( ) . keys ( {
89
+ action : Joi . string ( ) . valid ( 'opened' ) . required ( ) ,
90
+ issue : Joi . object ( ) . required ( ) ,
91
+ repository : Joi . object ( ) . required ( )
92
+ } ) ,
93
+ parse : ( data ) => ( {
94
+ issue : parseIssue ( data . issue ) ,
95
+ repository : parseRepository ( data . repository )
96
+ } )
97
+ } ;
111
98
112
- CommentCreatedEvent . parse = parseComment ;
99
+ // definition of issue updated event
100
+ const IssueUpdatedEvent = {
101
+ event : models . IssueUpdatedEvent ,
102
+ schema : Joi . object ( ) . keys ( {
103
+ action : Joi . string ( ) . valid ( 'edited' ) . required ( ) ,
104
+ issue : Joi . object ( ) . required ( ) ,
105
+ repository : Joi . object ( ) . required ( )
106
+ } ) ,
107
+ parse : ( data ) => ( {
108
+ issue : parseIssue ( data . issue ) ,
109
+ repository : parseRepository ( data . repository )
110
+ } )
111
+ } ;
113
112
114
- // end the CommentCreatedEvent
113
+ // definition of issue comment updated event
114
+ const CommentCreatedEvent = {
115
+ event : models . CommentCreatedEvent ,
116
+ schema : Joi . object ( ) . keys ( {
117
+ action : Joi . string ( ) . valid ( 'created' ) . required ( ) ,
118
+ issue : Joi . object ( ) . required ( ) ,
119
+ repository : Joi . object ( ) . required ( ) ,
120
+ comment : Joi . object ( ) . required ( )
121
+ } ) ,
122
+ parse : parseComment
123
+ } ;
115
124
116
- // begin the CommentUpdatedEvent
125
+ // definition of issue comment created event
117
126
const CommentUpdatedEvent = {
118
- event : models . CommentUpdatedEvent
127
+ event : models . CommentUpdatedEvent ,
128
+ schema : Joi . object ( ) . keys ( {
129
+ action : Joi . string ( ) . valid ( 'edited' ) . required ( ) ,
130
+ issue : Joi . object ( ) . required ( ) ,
131
+ repository : Joi . object ( ) . required ( ) ,
132
+ comment : Joi . object ( ) . required ( )
133
+ } ) ,
134
+ parse : parseComment
119
135
} ;
120
136
121
- CommentUpdatedEvent . schema = Joi . object ( ) . keys ( {
122
- action : Joi . string ( ) . valid ( 'edited' ) . required ( ) ,
123
- issue : Joi . object ( ) . required ( ) ,
124
- repository : Joi . object ( ) . required ( ) ,
125
- comment : Joi . object ( ) . required ( )
126
- } ) ;
127
-
128
- CommentUpdatedEvent . parse = parseComment ;
129
- // end the CommentUpdatedEvent
130
-
131
- // begin the UserAssignedEvent
137
+ // definition of issue user assigned event
132
138
const UserAssignedEvent = {
133
- event : models . UserAssignedEvent
139
+ event : models . UserAssignedEvent ,
140
+ schema : Joi . object ( ) . keys ( {
141
+ action : Joi . string ( ) . valid ( 'assigned' ) . required ( ) ,
142
+ issue : Joi . object ( ) . required ( ) ,
143
+ assignee : Joi . object ( ) . required ( ) ,
144
+ repository : Joi . object ( ) . required ( )
145
+ } ) ,
146
+ parse : ( data ) => ( {
147
+ issue : parseIssue ( data . issue ) ,
148
+ repository : parseRepository ( data . repository ) ,
149
+ assignee : {
150
+ id : data . assignee . id
151
+ }
152
+ } )
134
153
} ;
135
154
136
- UserAssignedEvent . schema = Joi . object ( ) . keys ( {
137
- action : Joi . string ( ) . valid ( 'assigned' ) . required ( ) ,
138
- issue : Joi . object ( ) . required ( ) ,
139
- assignee : Joi . object ( ) . required ( ) ,
140
- repository : Joi . object ( ) . required ( )
141
- } ) ;
142
-
143
- UserAssignedEvent . parse = ( data ) => ( {
144
- issue : parseIssue ( data . issue ) ,
145
- repository : parseRepository ( data . repository ) ,
146
- assignee : {
147
- id : data . assignee . id
148
- }
149
- } ) ;
150
-
151
- // end the UserAssignedEvent
152
-
153
- // begin the UserUnassignedEvent
155
+ // definition of issue user unassigned event
154
156
const UserUnassignedEvent = {
155
- event : models . UserUnassignedEvent
157
+ event : models . UserUnassignedEvent ,
158
+ schema : Joi . object ( ) . keys ( {
159
+ action : Joi . string ( ) . valid ( 'unassigned' ) . required ( ) ,
160
+ issue : Joi . object ( ) . required ( ) ,
161
+ assignee : Joi . object ( ) . required ( ) ,
162
+ repository : Joi . object ( ) . required ( )
163
+ } ) ,
164
+ parse : ( data ) => ( {
165
+ issue : parseIssue ( data . issue ) ,
166
+ repository : parseRepository ( data . repository )
167
+ } )
156
168
} ;
157
169
158
- UserUnassignedEvent . schema = Joi . object ( ) . keys ( {
159
- action : Joi . string ( ) . valid ( 'unassigned' ) . required ( ) ,
160
- issue : Joi . object ( ) . required ( ) ,
161
- assignee : Joi . object ( ) . required ( ) ,
162
- repository : Joi . object ( ) . required ( )
163
- } ) ;
164
-
165
- UserUnassignedEvent . parse = ( data ) => ( {
166
- issue : parseIssue ( data . issue ) ,
167
- repository : parseRepository ( data . repository )
168
- } ) ;
169
-
170
- // end the UserUnassignedEvent
171
-
172
- // start of LabelUpdatedEvent
170
+ // definition of issue label updated event
173
171
const LabelUpdatedEvent = {
174
172
event : models . LabelUpdatedEvent ,
175
173
schema : Joi . object ( ) . keys ( {
@@ -185,42 +183,34 @@ const LabelUpdatedEvent = {
185
183
} )
186
184
} ;
187
185
188
- // end the LabelUnassignedEvent
189
-
190
- // begin the PullRequestCreatedEvent
186
+ // definition of pull request created event
191
187
const PullRequestCreatedEvent = {
192
- event : models . PullRequestCreatedEvent
188
+ event : models . PullRequestCreatedEvent ,
189
+ schema : Joi . object ( ) . keys ( {
190
+ action : Joi . string ( ) . valid ( 'opened' ) . required ( ) ,
191
+ pull_request : Joi . object ( ) . required ( ) ,
192
+ repository : Joi . object ( ) . required ( )
193
+ } ) ,
194
+ parse : ( data ) => ( {
195
+ pull_request : parsePullRequest ( data ) ,
196
+ repository : parseRepository ( data . repository )
197
+ } )
193
198
} ;
194
199
195
- PullRequestCreatedEvent . schema = Joi . object ( ) . keys ( {
196
- action : Joi . string ( ) . valid ( 'opened' ) . required ( ) ,
197
- pull_request : Joi . object ( ) . required ( ) ,
198
- repository : Joi . object ( ) . required ( )
199
- } ) ;
200
-
201
- PullRequestCreatedEvent . parse = ( data ) => ( {
202
- pull_request : parsePullRequest ( data ) ,
203
- repository : parseRepository ( data . repository )
204
- } ) ;
205
- // end the PullRequestCreatedEvent
206
-
207
- // begin the PullRequestClosedEvent
200
+ // definition of pull request closed event
208
201
const PullRequestClosedEvent = {
209
- event : models . PullRequestClosedEvent
202
+ event : models . PullRequestClosedEvent ,
203
+ schema : Joi . object ( ) . keys ( {
204
+ action : Joi . string ( ) . valid ( 'closed' ) . required ( ) ,
205
+ pull_request : Joi . object ( ) . required ( ) ,
206
+ repository : Joi . object ( ) . required ( )
207
+ } ) ,
208
+ parse : ( data ) => ( {
209
+ pull_request : parsePullRequest ( data ) ,
210
+ repository : parseRepository ( data . repository )
211
+ } )
210
212
} ;
211
213
212
- PullRequestClosedEvent . schema = Joi . object ( ) . keys ( {
213
- action : Joi . string ( ) . valid ( 'closed' ) . required ( ) ,
214
- pull_request : Joi . object ( ) . required ( ) ,
215
- repository : Joi . object ( ) . required ( )
216
- } ) ;
217
-
218
- PullRequestClosedEvent . parse = ( data ) => ( {
219
- pull_request : parsePullRequest ( data ) ,
220
- repository : parseRepository ( data . repository )
221
- } ) ;
222
- // end the PullRequestClosedEvent
223
-
224
214
module . exports = new EventDetector ( 'github' , [
225
215
IssueCreatedEvent ,
226
216
IssueUpdatedEvent ,
0 commit comments