From 8179643067745763563f819cb615bffb73cdcf82 Mon Sep 17 00:00:00 2001 From: David Bailey Date: Sun, 20 Aug 2017 20:32:16 +0100 Subject: [PATCH 1/3] Improve handling of HTTP headers --- AnkiConnect.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/AnkiConnect.py b/AnkiConnect.py index a4acd20..ac1cfff 100644 --- a/AnkiConnect.py +++ b/AnkiConnect.py @@ -202,16 +202,22 @@ class AjaxServer: self.resetHeaders() - def addHeader(self, name, value): - self.headers.append([name, value]) - - + def setHeader(self, name, value): + self.headers[name] = value + + def resetHeaders(self): - self.headers = [ - ['HTTP/1.1 200 OK', None], - ['Content-Type', 'text/json'], - ['Content-Length', ''] - ] + self.headers = { + 'HTTP/1.1 200 OK': None, + 'Content-Type': 'text/json' + } + + + def getHeaders(self): + headers = [] + for name in self.headers: + headers.append([name, self.headers[name]]) + return headers def advance(self): @@ -256,9 +262,9 @@ class AjaxServer: body = json.dumps(None); resp = bytes() - - headers = self.headers - headers[2][1] = str(len(body)) + + self.setHeader('Content-Length', str(len(body))) + headers = self.getHeaders() for key, value in headers: if value is None: From d86722c3cb0ce1599785d4ab19a33443dac4d0ee Mon Sep 17 00:00:00 2001 From: David Bailey Date: Sun, 20 Aug 2017 22:29:52 +0100 Subject: [PATCH 2/3] Separate standard headers from extra headers --- AnkiConnect.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/AnkiConnect.py b/AnkiConnect.py index ac1cfff..c8b3c2b 100644 --- a/AnkiConnect.py +++ b/AnkiConnect.py @@ -203,19 +203,20 @@ class AjaxServer: def setHeader(self, name, value): - self.headers[name] = value + self.extraHeaders[name] = value def resetHeaders(self): - self.headers = { - 'HTTP/1.1 200 OK': None, - 'Content-Type': 'text/json' - } + self.headers = [ + ['HTTP/1.1 200 OK', None], + ['Content-Type', 'text/json'] + ] + self.extraHeaders = {} def getHeaders(self): - headers = [] - for name in self.headers: + headers = self.headers + for name in self.extraHeaders: headers.append([name, self.headers[name]]) return headers From 0cc83ab161cf243507b46ee0b55dee800dceddcd Mon Sep 17 00:00:00 2001 From: David Bailey Date: Sun, 20 Aug 2017 22:39:50 +0100 Subject: [PATCH 3/3] Bugfix --- AnkiConnect.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AnkiConnect.py b/AnkiConnect.py index c8b3c2b..8dececb 100644 --- a/AnkiConnect.py +++ b/AnkiConnect.py @@ -215,9 +215,9 @@ class AjaxServer: def getHeaders(self): - headers = self.headers + headers = self.headers[:] for name in self.extraHeaders: - headers.append([name, self.headers[name]]) + headers.append([name, self.extraHeaders[name]]) return headers