From 5e10087299609505d723bf3c51aa0913a13f2f3f Mon Sep 17 00:00:00 2001 From: kongr45gpen Date: Wed, 4 Jan 2017 17:30:03 +0200 Subject: Smarter handling of unknown events --- __init__.py | 2 ++ local/handler/GithubHandler.py | 4 +++- local/handler/UnknownHandler.py | 22 ++++++++++++++++++++++ local/theme/DefaultTheme.py | 38 ++++++++++++++++++++++++++++++++++---- 4 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 local/handler/UnknownHandler.py diff --git a/__init__.py b/__init__.py index 92c68a6..e035536 100644 --- a/__init__.py +++ b/__init__.py @@ -39,6 +39,7 @@ import local.handler.StatusHandler import local.handler.TravisHandler import local.handler.MessageHandler import local.handler.ReleaseHandler +import local.handler.UnknownHandler import local.handler.AppVeyorHandler import local.handler.CreateDeleteHandler import local.handler.IssueCommentHandler @@ -56,6 +57,7 @@ reload(local.handler.StatusHandler) reload(local.handler.TravisHandler) reload(local.handler.MessageHandler) reload(local.handler.ReleaseHandler) +reload(local.handler.UnknownHandler) reload(local.handler.AppVeyorHandler) reload(local.handler.CreateDeleteHandler) reload(local.handler.IssueCommentHandler) diff --git a/local/handler/GithubHandler.py b/local/handler/GithubHandler.py index e767e49..362917f 100644 --- a/local/handler/GithubHandler.py +++ b/local/handler/GithubHandler.py @@ -35,6 +35,7 @@ import StatusHandler import TravisHandler import MessageHandler import ReleaseHandler +import UnknownHandler import AppVeyorHandler import CreateDeleteHandler import IssueCommentHandler @@ -185,7 +186,8 @@ class GithubHandler(BaseHTTPServer.BaseHTTPRequestHandler): elif 'eventName' in data: AppVeyorHandler.handle(data, theme) else: - theme.unknown(eventType) + data['eventType'] = eventType + UnknownHandler.handle(data, theme) theme.finalize() diff --git a/local/handler/UnknownHandler.py b/local/handler/UnknownHandler.py new file mode 100644 index 0000000..e158512 --- /dev/null +++ b/local/handler/UnknownHandler.py @@ -0,0 +1,22 @@ +from ..utility import * + +def handle(data, theme): + actor = data['sender']['login'] \ + if 'sender' in data and 'login' in data['sender'] \ + else None + action = data['action'] if 'action' in data else None + + url = None + for key in data: + if key not in ['repository', 'sender'] \ + and isinstance(data[key], dict)\ + and 'html_url' in data[key]: + url = data[key]['html_url'] + break + + theme.unknown( + eventType = data['eventType'], + action = action, + actor = actor, + url = url + ) diff --git a/local/theme/DefaultTheme.py b/local/theme/DefaultTheme.py index 96259d0..e6269d7 100644 --- a/local/theme/DefaultTheme.py +++ b/local/theme/DefaultTheme.py @@ -128,7 +128,7 @@ class DefaultTheme(Theme): )) def wikiPages(self, actor, pages, url): - urlShown = False; + urlShown = False for page in pages: if configValue("hidePush") and urlShown is False: @@ -184,10 +184,40 @@ class DefaultTheme(Theme): ircutils.mircColor(message, "light blue") )) - def unknown(self, eventType): - self.msgs.append( "%s: %s happened" % ( + def unknown(self, eventType, action, actor, url): + if action is not None: + if eventType is None: + event = colorAction(action) + else: + event = "%s a%s %s" % ( + colorAction(action), + 'n' if eventType[0:1] in ['a','e','i','o','u'] else '', + eventType + ) + if actor: + event = "%s %s" % ( + ircutils.mircColor(actor, "green"), + event + ) + else: + if eventType is None: + event = "Something happened" + else: + event = "A%s %s happened" % ( + 'n' if eventType[0:1] in ['a', 'e', 'i', 'o', 'u'] else '', + colorAction(eventType) + + ) + if actor: + event = "%s by %s" % ( + event, + ircutils.mircColor(actor, "green") + ) + + self.msgs.append( "%s: %s %s" % ( self.repo(), - "A %s" % (ircutils.bold(eventType)) if eventType else "Something" + event, + self.enclose(url) )) def repo(self, branch = None): -- cgit v1.2.3