Skip to content

Commit d2a8376

Browse files
Merge pull request #91 from travis-ci/sentry_cleanup_am
[BSFY-168/169] Handle missing payload fields
2 parents f1766e1 + 9ca1d2b commit d2a8376

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

lib/travis/listener/app.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ def dispatch_event
111111

112112
return unless handle_event?
113113

114+
# According to GitHub every webhook payload should have this
115+
# If it is not present, assume payload is malformed
116+
return unless payload['sender']
117+
114118
debug "Event payload for #{uuid}: #{payload.inspect}"
115119

116120
log_event

lib/travis/listener/schemas.rb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -144,37 +144,37 @@ def self.event_details(event_type, payload)
144144
source: payload['pull_request']['head']['repo'] && payload['pull_request']['head']['repo']['full_name'],
145145
head: payload['pull_request']['head']['sha'][0..6],
146146
ref: payload['pull_request']['head']['ref'],
147-
user: payload['pull_request']['head']['user']['login'],
148-
sender: payload['sender']['login'],
149-
sender_type: payload['sender']['type']
147+
user: payload['pull_request']['head'].fetch('user', {}).fetch('login', ''),
148+
sender: payload['sender'].fetch('login', ''),
149+
sender_type: payload['sender'].fetch('type', '')
150150
}
151151
when 'push'
152152
{
153153
repository: payload["repository"]["full_name"],
154154
ref: payload['ref'],
155155
head: payload['head_commit'] && payload['head_commit']['id'][0..6],
156156
commits: (payload["commits"] || []).map {|c| c['id'][0..6]}.join(","),
157-
sender: payload['sender']['login'],
158-
sender_type: payload['sender']['type']
157+
sender: payload['sender'].fetch('login', ''),
158+
sender_type: payload['sender'].fetch('type', '')
159159
}
160160
when 'check_suite'
161161
{
162162
action: payload['action'],
163163
ref_type: payload['check_suite']['ref_type'],
164164
repository: payload["repository"]["full_name"],
165-
sender: payload['sender']['login']
165+
sender: payload['sender'].fetch('login', '')
166166
}
167167
when 'create', 'delete', 'repository', 'check_run'
168168
{
169169
action: payload['action'],
170170
repository: payload["repository"]["full_name"],
171-
sender: payload['sender']['login']
171+
sender: payload['sender'].fetch('login', '')
172172
}
173173
when 'installation', 'installation_repositories'
174174
{
175175
action: payload['action'],
176176
installation: payload["installation"]["account"]["login"],
177-
sender: payload['sender']['login']
177+
sender: payload['sender'].fetch('login', '')
178178
}
179179
else
180180
{ }

0 commit comments

Comments
 (0)