From 9fdf9bac865da95aa38c62e3f308271e2e7fee50 Mon Sep 17 00:00:00 2001 From: kongr45gpen Date: Wed, 16 Mar 2016 22:11:50 +0200 Subject: Allow sending arbitrary messages --- __init__.py | 2 ++ config.py | 4 ++++ local/handler/GithubHandler.py | 10 +++++++--- local/handler/MessageHandler.py | 5 +++++ local/theme/DefaultTheme.py | 9 +++++++++ local/utility.py | 2 +- samples/message.json | 27 +++++++++++++++++++++++++++ 7 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 local/handler/MessageHandler.py create mode 100644 samples/message.json diff --git a/__init__.py b/__init__.py index 1ec41a4..e6644b8 100644 --- a/__init__.py +++ b/__init__.py @@ -34,6 +34,7 @@ import local.handler.WikiHandler import local.handler.IssueHandler import local.handler.StatusHandler import local.handler.TravisHandler +import local.handler.MessageHandler import local.handler.CreateDeleteHandler import local.handler.IssueCommentHandler import local.theme.Theme @@ -47,6 +48,7 @@ reload(local.handler.WikiHandler) reload(local.handler.IssueHandler) reload(local.handler.StatusHandler) reload(local.handler.TravisHandler) +reload(local.handler.MessageHandler) reload(local.handler.CreateDeleteHandler) reload(local.handler.IssueCommentHandler) reload(local.theme.Theme) diff --git a/config.py b/config.py index 0c3c510..c519702 100644 --- a/config.py +++ b/config.py @@ -63,4 +63,8 @@ conf.registerGlobalValue(Github, 'theme', conf.registerGlobalValue(Github, 'brackets', registry.String('( )', """The brackets to use to enclose URLs (space-separated)""")) +conf.registerGlobalValue(Github, 'allowArbitraryMessages', + registry.Boolean(False, + """Whether to allow parsing and showing arbitrary messages sent by a client""")) + # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: diff --git a/local/handler/GithubHandler.py b/local/handler/GithubHandler.py index 53ea740..e1e6394 100644 --- a/local/handler/GithubHandler.py +++ b/local/handler/GithubHandler.py @@ -30,6 +30,7 @@ import WikiHandler import IssueHandler import StatusHandler import TravisHandler +import MessageHandler import CreateDeleteHandler import IssueCommentHandler @@ -133,9 +134,10 @@ class GithubHandler(BaseHTTPServer.BaseHTTPRequestHandler): repo = {} - repo['name'] = data.get('repository',{}).get('name') - repo['owner'] = data.get('repository',{}).get('owner',{}).get('login') - repo['fork'] = data.get('repository',{}).get('fork', False) + repo['unknown'] = 'repository' not in data + repo['name'] = data.get('repository',{}).get('name') + repo['owner'] = data.get('repository',{}).get('owner',{}).get('login') + repo['fork'] = data.get('repository',{}).get('fork', False) theme = klass(repo, brackets) # @@ -159,6 +161,8 @@ class GithubHandler(BaseHTTPServer.BaseHTTPRequestHandler): IssueHandler.handle(data, theme) elif 'ref_type' in data: CreateDeleteHandler.handle(data, theme) + elif 'message' in data: + MessageHandler.handle(data, theme) else: theme.unknown(eventType) diff --git a/local/handler/MessageHandler.py b/local/handler/MessageHandler.py new file mode 100644 index 0000000..c3433b4 --- /dev/null +++ b/local/handler/MessageHandler.py @@ -0,0 +1,5 @@ +from ..utility import * + +def handle(data, theme): + if configValue('allowArbitraryMessages'): + theme.message(data['message']) diff --git a/local/theme/DefaultTheme.py b/local/theme/DefaultTheme.py index a0e797c..2a17845 100644 --- a/local/theme/DefaultTheme.py +++ b/local/theme/DefaultTheme.py @@ -154,6 +154,15 @@ class DefaultTheme(Theme): self.enclose(url) )) + def message(self, message): + if self.repoInfo['unknown']: + self.msgs.append(message) + else: + self.msgs.append( "%s: %s" % ( + self.repo(), + message + )) + def unknown(self, eventType): self.msgs.append( "%s: %s happened" % ( self.repo(), diff --git a/local/utility.py b/local/utility.py index 8ad2a61..ef37c28 100644 --- a/local/utility.py +++ b/local/utility.py @@ -39,7 +39,7 @@ def addConfigOverride(name, value): name = name.strip().lower() - if name in [ 'passcode', 'disallowConfigOverride' ]: + if name in [ 'passcode', 'disallowConfigOverride', 'allowArbitraryMessages' ]: return globals.configOverrides[name] = value diff --git a/samples/message.json b/samples/message.json new file mode 100644 index 0000000..7f8b9f0 --- /dev/null +++ b/samples/message.json @@ -0,0 +1,27 @@ +{ + "message": "\u000307\u0002IMPORTANT:\u000f\u000f Attention is required on \u000311Server #11\u000f", + "repository": { + "id": 20000106, + "name": "public-repo", + "full_name": "baxterthehacker/public-repo", + "owner": { + "login": "baxterthehacker", + "id": 6752317, + "avatar_url": "https://avatars.githubusercontent.com/u/6752317?v=2", + "gravatar_id": "", + "url": "https://api.github.com/users/baxterthehacker", + "html_url": "https://github.com/baxterthehacker", + "followers_url": "https://api.github.com/users/baxterthehacker/followers", + "following_url": "https://api.github.com/users/baxterthehacker/following{/other_user}", + "gists_url": "https://api.github.com/users/baxterthehacker/gists{/gist_id}", + "starred_url": "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/baxterthehacker/subscriptions", + "organizations_url": "https://api.github.com/users/baxterthehacker/orgs", + "repos_url": "https://api.github.com/users/baxterthehacker/repos", + "events_url": "https://api.github.com/users/baxterthehacker/events{/privacy}", + "received_events_url": "https://api.github.com/users/baxterthehacker/received_events", + "type": "User", + "site_admin": false + } + } +} -- cgit v1.2.3