def emit_events(self, repo, number): ancestor = models.GithubResource.make_key(repo, number) events = list(models.GithubWebhookRaw.query(ancestor=ancestor)) events.sort(key=lambda e: e.timestamp) self.response.write('<h3>Distilled Events</h3>') self.response.write('<pre>') event_pairs = [(event.event, json.loads(event.body)) for event in events] for ev in classifier.distill_events(event_pairs): self.response.write(cgi.escape('%s, %s\n' % ev)) self.response.write('</pre>') self.response.write('<h3>%d Raw Events</h3>' % (len(events))) self.response.write('<table border=2>') merged = {} for event in events: body_json = json.loads(event.body) shrink(body_json) if 'issue' in body_json: merged.update(body_json['issue']) elif 'pull_request' in body_json: merged.update(body_json['pull_request']) body = json.dumps(body_json, indent=2) action = body_json.get('action') sender = body_json.get('sender', {}).get('login') self.response.write('<tr><td>%s\n' % '<td>'.join( str(x) for x in [ event.timestamp, event.event, action, sender, '<pre>' + cgi.escape(body) ])) return merged
def test_distill(self): self.assertEqual( classifier.distill_events([ make_comment_event(1, 'a'), make_comment_event(2, 'b'), make_comment_event(1, 'a', action='deleted'), make_comment_event(3, 'c', event='pull_request_review_comment'), make_comment_event(4, 'k8s-bot'), ('pull_request', { 'action': 'synchronize', 'sender': { 'login': '******' } }), ('pull_request', { 'action': 'labeled', 'sender': { 'login': '******' }, 'label': { 'name': 'lgtm' } }), ]), [ ('comment', 'b'), ('comment', 'c'), ('push', 'auth'), ('label lgtm', 'rev'), ])
def emit_events(self, repo, number): ancestor = models.GithubResource.make_key(repo, number) events = list(models.GithubWebhookRaw.query(ancestor=ancestor) .order(models.GithubWebhookRaw.timestamp)) self.response.write('<h3>Distilled Events</h3>') self.response.write('<pre>') event_pairs = [event.to_tuple() for event in events] for ev in classifier.distill_events(event_pairs): self.response.write(cgi.escape('%s, %s %s\n' % ev)) self.response.write('</pre>') self.response.write('<h3>%d Raw Events</h3>' % (len(events))) self.response.write('<table border=2>') self.response.write('<tr><th>Timestamp<th>Event<th>Action<th>Sender<th>Body</tr>') merged = {} for event in events: body_json = json.loads(event.body) models.shrink(body_json) if 'issue' in body_json: merged.update(body_json['issue']) elif 'pull_request' in body_json: merged.update(body_json['pull_request']) body = json.dumps(body_json, indent=2) action = body_json.get('action') sender = body_json.get('sender', {}).get('login') self.response.write('<tr><td>%s\n' % '<td>'.join(str(x) for x in [event.timestamp, event.event, action, sender, '<pre>' + cgi.escape(body)])) return merged
def emit_events(self, repo, number): ancestor = models.GitHubResource.make_key(repo, number) events = list(models.GitHubWebhookRaw.query(ancestor=ancestor) .order(models.GitHubWebhookRaw.timestamp)) self.response.write('<h3>Distilled Events</h3>') self.response.write('<pre>') event_pairs = [event.to_tuple() for event in events] for ev in classifier.distill_events(event_pairs): self.response.write(cgi.escape('%s, %s %s\n' % ev)) self.response.write('</pre>') self.response.write('<h3>%d Raw Events</h3>' % (len(events))) self.response.write('<table border=2>') self.response.write('<tr><th>Timestamp<th>Event<th>Action<th>Sender<th>Body</tr>') merged = {} for event in events: body_json = json.loads(event.body) models.shrink(body_json) if 'issue' in body_json: merged.update(body_json['issue']) elif 'pull_request' in body_json: merged.update(body_json['pull_request']) body = json.dumps(body_json, indent=2) action = body_json.get('action') sender = body_json.get('sender', {}).get('login') self.response.write('<tr><td>%s\n' % '<td>'.join(str(x) for x in [ # Table columns event.timestamp, '%s<br><code>%s</code>' % (event.event, event.guid), action, sender, '<pre>' + cgi.escape(body) ])) return merged
def test_distill(self): self.assertEqual(classifier.distill_events([ make_comment_event(1, 'a'), make_comment_event(2, 'b'), make_comment_event(1, 'a', action='deleted'), make_comment_event(3, 'c', event='pull_request_review_comment'), make_comment_event(4, 'k8s-bot'), ('pull_request', {'action': 'synchronize', 'sender': {'login': '******'}}), ('pull_request', {'action': 'labeled', 'sender': {'login': '******'}, 'label': {'name': 'lgtm'}}), ]), [ ('comment', 'b'), ('comment', 'c'), ('push', 'auth'), ('label lgtm', 'rev'), ])