From 9bef4b7df1464043fa139f0f046c725980e3577e Mon Sep 17 00:00:00 2001 From: jesopo Date: Sat, 8 Dec 2018 09:00:12 +0000 Subject: [PATCH] Switch to using a case insensitive dictionary for headers instead of doing .title() on each header key --- modules/github.py | 2 +- modules/rest_api.py | 2 +- src/utils/__init__.py | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/github.py b/modules/github.py index ea0fd80b..92a0c268 100644 --- a/modules/github.py +++ b/modules/github.py @@ -41,7 +41,7 @@ class Module(ModuleManager.BaseModule): )["payload"][0] data = json.loads(payload) - github_event = event["headers"]["X-Github-Event"] + github_event = event["headers"]["X-GitHub-Event"] if github_event == "ping": return True diff --git a/modules/rest_api.py b/modules/rest_api.py index f558efca..2914f5d3 100644 --- a/modules/rest_api.py +++ b/modules/rest_api.py @@ -14,7 +14,7 @@ class Handler(http.server.BaseHTTPRequestHandler): _, _, endpoint = path[1:].partition("/") endpoint, _, args = endpoint.partition("/") args = list(filter(None, args.split("/"))) - headers = {key.title(): value for key, value in self.headers.items()} + headers = utils.CaseInsensitiveDict(dict(self.headers.items())) response = "" code = 404 diff --git a/src/utils/__init__.py b/src/utils/__init__.py index 17adf79b..1b218b60 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -171,3 +171,11 @@ def top_10(items: typing.Dict[typing.Any, typing.Any], value_format(items[key]))) return top_10_items + +class CaseInsensitiveDict(dict): + def __init__(self, other): + dict.__init__(self, ((k.lower(), v) for k, v in other)) + def __getitem__(self, key): + return dict.__getitem__(self, key.lower()) + def __setitem__(self, key): + return dict.__setitem__(self, key.lower())