U
    ?e!                     @   s^   d dl Z d dlmZ d dlmZ e dZG dd deZG dd deZ	G dd	 d	e	Z
dS )
    N)StringIOzxhtml2pdf.wsgic                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Filterc                 C   s
   || _ d S N)app)selfr    r   2/tmp/pip-unpacked-wheel-35p66c5k/xhtml2pdf/wsgi.py__init__   s    zFilter.__init__c              	      s   | dd}| dd}g t d fdd	} ||}sJ|S \}}}	z|D ]}
|
 qZW 5 t|dr|  X  } ||||||\}}}|||	 |gS )NZSCRIPT_NAME Z	PATH_INFOc                    s4     | |s| ||S | ||gd d < jS d S r   )should_filterwrite)statusheadersexc_infor   sentstart_responseZwritten_responser   r   replacement_start_response$   s    z3Filter.__call__.<locals>.replacement_start_responseclose)N)getr   r   hasattrr   r   getvaluefilter)r   environr   script_name	path_infor   Zapp_iterr   r   r   chunkbodyr   r   r   __call__   s2    


     
zFilter.__call__c                 C   s   t | d S r   )print)r   r   r   r   r   r   r   ;   s    zFilter.should_filterc                 C   s   t d S r   )NotImplementedError)r   r   r   r   r   r   r   r   >   s    zFilter.filterN)__name__
__module____qualname__r	   r   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd ZdS )
HTMLFilterc                 C   s:   | dsdS |D ]"\}}| dkr| d  S qdS )NZ200Fcontent-typez	text/html)
startswithlower)r   r   r   namevaluer   r   r   r   C   s    
zHTMLFilter.should_filterN)r!   r"   r#   r   r   r   r   r   r$   B   s   r$   c                   @   s   e Zd Zdd ZdS )PisaMiddlewarec           	      C   sH   | dd}|r>t }tj||dd ddd| fg}| }|||fS )Nz
pisa.topdfr
   T)Zshow_error_as_pdf)r%   zapplication/pdfzcontent-dispositionzattachment; filename=)r   r   pisaZ	CreatePDFr   )	r   r   r   r   r   r   r   Ztopdfdstr   r   r   r   M   s    
zPisaMiddleware.filterN)r!   r"   r#   r   r   r   r   r   r*   L   s   r*   )loggingior   Zxhtml2pdf.pisar+   	getLoggerlogobjectr   r$   r*   r   r   r   r   <module>   s   
(
