Skip to content

Instantly share code, notes, and snippets.

@mdevaev
Created May 31, 2018 16:14
Show Gist options
  • Save mdevaev/2eca0d3d81761f290121c20345e3272d to your computer and use it in GitHub Desktop.
Save mdevaev/2eca0d3d81761f290121c20345e3272d to your computer and use it in GitHub Desktop.
from urllib.request import BaseHandler
from urllib.request import Request
from urllib.response import addinfo
from urllib.response import addinfourl
import gzip
from typing import Union
# =====
class GzipHandler(BaseHandler):
def http_request(self, request: Request) -> Request:
request.add_header("Accept-Encoding", "gzip")
return request
def http_response(self, request: Request, response: addinfo) -> Union[addinfo, addinfourl]: # pylint: disable=unused-argument
if response.headers.get("Content-Encoding") == "gzip":
gzip_file = gzip.GzipFile(fileobj=response, mode="r")
new_response = addinfourl(gzip_file, response.headers, response.url, response.code)
new_response.msg = response.msg
return new_response
return response
https_request = http_request
https_response = http_response
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment