예제 #1
0
    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
예제 #2
0
 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'),
         ])
예제 #3
0
    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
예제 #4
0
    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
예제 #5
0
 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'),
     ])