
    Xwga                         d dl Z d dlmZ d dlmZ d dlmZ  e j                  e      Z	 G d d      Z
 G d de
      Z G d	 d
e      Zy)    N)abstractmethod)StringIO)pisac                   :    e Zd ZddZd Zed        Zed        Zy)FilterNc                     || _         y N)app)selfr
   s     E/var/www/horilla/myenv/lib/python3.12/site-packages/xhtml2pdf/wsgi.py__init__zFilter.__init__   s	        c                     |j                  dd      }|j                  dd      }g t               d fd	} j                  ||      }s|S \  }}}		 |D ]  }
j                  |
        	 t	        |d      r|j                          	 j                         } j                  ||||||      \  }}} |||	       |gS # t	        |d      r|j                          w w xY w)NSCRIPT_NAME 	PATH_INFOc                 d    j                  | |      s
 | ||      S | ||gd d  j                  S r	   )should_filterwrite)statusheadersexc_infor   sentstart_responsewritten_responses      r   replacement_start_responsez3Filter.__call__.<locals>.replacement_start_response"   s>    %%fg6%fgx@@w1DG#)))r   closer	   )getr   r
   r   hasattrr   getvaluefilter)r   environr   script_name	path_infor   app_iterr   r   r   chunkbodyr   r   s   ` `         @@r   __call__zFilter.__call__   s    kk-4KKR0	#:	* 	* 88G%?@O$(!	!! . &&u-. x) ((* $GVWd!
 	vw1v x)  *s   C C'c                     t        |       y r	   )print)_statusr   s     r   r   zFilter.should_filter9   s	    gr   c                     t         r	   )NotImplementedError)r   r   r   r'   s       r   r!   zFilter.filter=   s    !!r   )returnN)	__name__
__module____qualname__r   r(   staticmethodr   r   r!    r   r   r   r      s4    :   " "r   r   c                       e Zd Zed        Zy)
HTMLFilterc                     | j                  d      sy|D ]+  \  }}|j                         dk(  s|j                  d      c S  y)N200Fcontent-typez	text/html)
startswithlower)r   r   namevalues       r   r   zHTMLFilter.should_filterC   sJ      '" 	5KD%zz|~-''44	5 r   N)r/   r0   r1   r2   r   r3   r   r   r5   r5   B   s     r   r5   c                       e Zd Zed        Zy)PisaMiddlewarec                     |j                  dd      }|r;t               }t        j                  ||d       ddd|z   fg}|j	                         }|||fS )Nz
pisa.topdfr   T)show_error_as_pdf)r8   zapplication/pdfzcontent-dispositionzattachment; filename=)r   r   r   	CreatePDFr    )_script_name
_path_infor"   r   r   r'   topdfdsts           r   r!   zPisaMiddleware.filterN   s^    L"-*CNN4=3&(?%(GHG <<>Dw$$r   N)r/   r0   r1   r2   r!   r3   r   r   r>   r>   M   s    
% 
%r   r>   )loggingabcr   ior   	xhtml2pdfr   	getLoggerr/   logr   r5   r>   r3   r   r   <module>rL      sH       g!'" '"T %Z %r   