From 93f1b1442ccba485c1b6a29fccca0dba99c82bb5 Mon Sep 17 00:00:00 2001 From: ccd0 Date: Sat, 1 Aug 2015 12:25:07 -0700 Subject: [PATCH] Break up do_GET. --- tools/proxy.py | 56 ++++++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/tools/proxy.py b/tools/proxy.py index 6bc0361f4..4657d2c29 100755 --- a/tools/proxy.py +++ b/tools/proxy.py @@ -16,34 +16,40 @@ class ExtensionReplacer(http.server.BaseHTTPRequestHandler): def do_GET(self): if self.headers.get('Host', '').split(':')[0] == 'localhost': - if self.path in resources: - mimeType, data = resources[self.path] - self.send_response(200) - self.send_header('Content-Type', mimeType) - self.send_header('Content-Length', len(data)) - self.end_headers() - if self.command != 'HEAD': - self.wfile.write(data) - else: - self.send_error(404) + self.local() else: - del self.headers['Accept-Encoding'] - try: - conn = http.client.HTTPConnection('boards.4chan.org') - conn.request('GET', self.path, headers=self.headers) - response = conn.getresponse() - body = response.read() - finally: - conn.close() - body = body.replace(b'', b'', 1) - self.send_response(response.status, response.reason) - for header, value in response.getheaders(): - if header.lower() not in ('date', 'connection', 'transfer-encoding', 'content-length'): - self.send_header(header, value) - self.send_header('Content-Length', len(body)) + self.proxy() + + def local(self): + if self.path in resources: + mimeType, data = resources[self.path] + self.send_response(200) + self.send_header('Content-Type', mimeType) + self.send_header('Content-Length', len(data)) self.end_headers() if self.command != 'HEAD': - self.wfile.write(body) + self.wfile.write(data) + else: + self.send_error(404) + + def proxy(self): + del self.headers['Accept-Encoding'] + try: + conn = http.client.HTTPConnection('boards.4chan.org') + conn.request('GET', self.path, headers=self.headers) + response = conn.getresponse() + body = response.read() + finally: + conn.close() + body = body.replace(b'', b'', 1) + self.send_response(response.status, response.reason) + for header, value in response.getheaders(): + if header.lower() not in ('date', 'connection', 'transfer-encoding', 'content-length'): + self.send_header(header, value) + self.send_header('Content-Length', len(body)) + self.end_headers() + if self.command != 'HEAD': + self.wfile.write(body) class ThreadedHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer): pass