3
š(ƒhe  ã               @   sN   d dl Z d dlmZ d dlmZ d dlmZmZ e jdƒZ	G dd„ deƒZ
dS )é    N)Úpatch_vary_headers)ÚMiddlewareMixin)Úcompress_sequenceÚcompress_stringz\bgzip\bc               @   s   e Zd ZdZdd„ ZdS )ÚGZipMiddlewarezÇ
    This middleware compresses content if the browser allows gzip compression.
    It sets the Vary header accordingly, so that caches will base their storage
    on the Accept-Encoding header.
    c             C   sÌ   |j  rt|jƒdk r|S |jdƒr(|S t|dƒ |jjddƒ}tj|ƒsN|S |j rht	|j
ƒ|_
|d= n8t|jƒ}t|ƒt|jƒkrˆ|S ||_tt|jƒƒ|d< |jdƒrÀtjdd	|d ƒ|d< d
|d< |S )NéÈ   zContent-EncodingúAccept-EncodingZHTTP_ACCEPT_ENCODINGÚ zContent-LengthÚETagz"$z;gzip"Úgzip)r   )Z	streamingÚlenÚcontentÚ
has_headerr   ZMETAÚgetÚre_accepts_gzipÚsearchr   Zstreaming_contentr   ÚstrÚreÚsub)ÚselfÚrequestÚresponseZaeZcompressed_content© r   ú:/tmp/pip-install-q3hcpn_q/Django/django/middleware/gzip.pyÚprocess_response   s(    




zGZipMiddleware.process_responseN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   
   s   r   )r   Zdjango.utils.cacher   Zdjango.utils.deprecationr   Zdjango.utils.textr   r   Úcompiler   r   r   r   r   r   Ú<module>   s
   
