Ë
    "ïàjX  ã                   ó’   — d Z ddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
mZmZ ddlmZ dZ ej                   e«      Z G d„ de«      Zy)	zT
WSGI middleware to catch application thrown DAVErrors and return proper
responses.
é    N)Úutil)ÚHTTP_FORBIDDENÚHTTP_INTERNAL_ERRORÚHTTP_NO_CONTENTÚHTTP_NOT_MODIFIEDÚDAVErrorÚas_DAVErrorÚget_http_status_string)ÚBaseMiddlewareÚreStructuredTextc                   ó*   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zˆ xZS )ÚErrorPrinterc                 ób   •— t         ‰| �  |||«       t        j                  |dd¬«      | _        y )NÚerror_printerT)Úas_dict)ÚsuperÚ__init__r   Úget_dict_valueÚ
err_config)ÚselfÚwsgidav_appÚnext_appÚconfigÚ	__class__s       €úD/srv/dav/.venv/lib/python3.12/site-packages/wsgidav/error_printer.pyr   zErrorPrinter.__init__"   s*   ø€ Ü‰Ñ˜ h°Ô7Ü×-Ñ-¨f°oÈtÔTˆ�ó    c                 ó<   — | j                   j                  d«      du S )NÚenableF)r   Úget)r   s    r   Úis_disabledzErrorPrinter.is_disabled&   s   € Ø�‰×"Ñ" 8Ó,°Ð5Ð5r   c              #   ó<  K  — t        j                  «       }	 	 d}| j                  ||«      }|D ]2  }|s( ||j                  |j                  |j
                  «       d}|–— Œ4 t        |d«      r|j                  «        |s( ||j                  |j                  |j
                  «       y # t        $ r ‚ t        $ rI}|j                  t        j                  k(  rt        t        |j                  «      d ‚t        |«      d ‚d }~wt        $ r:}t         j#                  t%        j&                  d«      › «       t        |«      d ‚d }~ww xY w# t        $ �rE}t         j)                  d|› �«       t+        |«      }|j,                  t.        k(  rPt%        j&                  d«      }	t         j#                  d|	› �«       t         j#                  d|j0                  › �«       n@|j,                  t2        t4        fv r( ||dd	t        j6                  «       fg«       d
–— Y d }~y |j9                  «       \  }
}|j:                  xs g } ||d|
fdt=        t?        |«      «      fd	t        j6                  «       fg|z   «       |j@                  s	d
–— Y d }~y |–— Y d }~y d }~ww xY w­w)NFTÚcloseé
   zCaught z1Caught HTTPRequestException(HTTP_INTERNAL_ERROR)
ze.src_exception:
)úContent-LengthÚ0ÚDater   zContent-Typer$   )!r   ÚSubAppStartResponser   ÚstatusÚresponse_headersÚexc_infoÚhasattrr"   r   ÚOSErrorÚerrnoÚEACCESr   Ústrerrorr	   Ú	ExceptionÚ_loggerÚerrorÚ	tracebackÚ
format_excÚdebugr
   Úvaluer   Úsrc_exceptionr   r   Úget_rfc1123_timeÚget_response_pageÚadd_headersÚstrÚlenÚadd_body)r   ÚenvironÚstart_responseÚsub_app_start_responseÚresponse_startedÚapp_iterÚvÚer(   ÚtbÚcontent_typeÚbodyÚheaderss                r   Ú__call__zErrorPrinter.__call__)   sp  è ø€ ä!%×!9Ñ!9Ó!;ÐðT	ð+/ð $)Ð ØŸ=™=¨Ð2HÓI�Ø!ò �Aá+á&Ø2×9Ñ9Ø2×CÑCØ2×;Ñ;ôð
 (,Ð$à“Gðô ˜8 WÔ-Ø—N‘NÔ$ñ (á"Ø.×5Ñ5Ø.×?Ñ?Ø.×7Ñ7ôð øÜò ØÜò /Ø—7‘7œeŸl™lÒ*Ü"¤>°1·:±:Ó>ÀDÐHÜ! !“n¨$Ð.ûÜò /ô —‘¤×!5Ñ!5°bÓ!9Ð :Ô<Ü! !“n¨$Ð.ûð	/ûô
 ó '	Ü�M‰M˜G A 3˜-Ô(ä+¨AÓ.ˆFà�w‰wÔ-Ò-Ü×)Ñ)¨"Ó-�Ü—‘Ð RÐSUÐRVÐWÔXä—‘Ð 2°1·?±?Ð2CÐDÕEØ—‘Ô.´Ð@Ñ@ñ ØÐ4°v¼t×?TÑ?TÓ?VÐ6WÐXôð ’	Üð "#×!4Ñ!4Ó!6ÑˆL˜$Ø—m‘mÒ) rˆGáØà# \Ð2Ø%¤s¬3¨t«9£~Ð6ØœT×2Ñ2Ó4Ð5ðð
 ñôð —:’:Ø’	ÜàŠJÜûðO'	üsn   ‚J™BB+ Â*JÂ+EÂ=ADÄEÄ5EÅEÅE
 Å

JÅCJÈJÈA,JÊJÊJÊJÊJÊJ)Ú__name__Ú
__module__Ú__qualname__r   r    rI   Ú__classcell__)r   s   @r   r   r   !   s   ø„ ôUò6öXr   r   )Ú__doc__r-   r3   Úwsgidavr   Úwsgidav.dav_errorr   r   r   r   r   r	   r
   Úwsgidav.mw.base_mwr   Ú__docformat__Úget_module_loggerrJ   r1   r   © r   r   ú<module>rU      sN   ðñ
ó
 Û å ÷÷ ñ õ .à"€à
 ˆ$×
 Ñ
  Ó
*€ô`�>õ `r   