§
    %xÅj  ã                  ó  — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZmZ dZdZ G d	„ d
¦  «        Z e¦   «         Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Zdd„ZdS )é    )Úannotations)Úcast)ÚHeaders)ÚHTTPException)ÚPlainTextResponse)ÚASGIAppÚMessageÚReceiveÚScopeÚSendzstarlette.max_body_sizezstarlette._body_limit_responderc                  ó   — e Zd ZdZdS )Ú_Missing© N)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   ó    úPC:\Projects\Historical\venv\Lib\site-packages\starlette/middleware/body_limit.pyr   r      s   € € € € € Ø€I€I€Ir   r   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )Ú_RequestBodyTooLargeÚreturnÚNonec                óN   •— t          ¦   «                              dd¬¦  «         d S )Né�  úContent Too Large)Ústatus_codeÚdetail)ÚsuperÚ__init__)ÚselfÚ	__class__s    €r   r    z_RequestBodyTooLarge.__init__   s'   ø€ Ý‰Œ×Ò SÐ1DÐÑEÔEÐEÐEÐEr   )r   r   )r   r   r   r    Ú__classcell__)r"   s   @r   r   r      sG   ø€ € € € € ðFð Fð Fð Fð Fð Fð Fð Fð Fð Fr   r   c                  ó   — e Zd ZdS )Ú_RequestBodyLimitResponseSentN)r   r   r   r   r   r   r%   r%      s   € € € € € Ø€Dr   r%   c                  ó"   — e Zd ZdZdd„Zdd„ZdS )ÚRequestBodyLimitMiddlewarez-Limit the total size of an HTTP request body.Úappr   Úmax_body_sizeÚintr   r   c                ó"   — || _         || _        d S ©N)r(   r)   ©r!   r(   r)   s      r   r    z#RequestBodyLimitMiddleware.__init__!   s   € ØˆŒØ*ˆÔÐÐr   Úscoper   Úreceiver
   Úsendr   c              ƒ  ó¶   K  — |d         dk    r|                       |||¦  «        ƒ d {V —†S t          | j         | j        ¦  «        } ||||¦  «        ƒ d {V —† d S )NÚtypeÚhttp)r(   ÚRequestBodyLimitResponderr)   )r!   r.   r/   r0   Ú	responders        r   Ú__call__z#RequestBodyLimitMiddleware.__call__%   s}   è è € Ø�Œ=˜FÒ"Ð"ØŸš %¨°$Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7å-¨d¬h¸Ô8JÑKÔKˆ	Øˆi˜˜w¨Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r   N©r(   r   r)   r*   r   r   ©r.   r   r/   r
   r0   r   r   r   )r   r   r   Ú__doc__r    r6   r   r   r   r'   r'      sB   € € € € € Ø7Ð7ð+ð +ð +ð +ð.ð .ð .ð .ð .ð .r   r'   c                  óv   — e Zd Zdd„Zedd	„¦   «         Zedd„¦   «         Zedd„¦   «         Zdd„Zdd„Z	dd„Z
dS )r4   r(   r   r)   r*   r   r   c                óv   — || _         || _        d | _        d | _        d | _        d | _        d| _        d| _        d S )Nr   F)r(   r)   Ú_scopeÚ_receiveÚ_sendÚcontent_lengthÚ
total_sizeÚresponse_startedr-   s      r   r    z"RequestBodyLimitResponder.__init__.   sC   € ØˆŒØ*ˆÔØ$(ˆŒØ(,ˆŒØ"&ˆŒ
Ø*.ˆÔØˆŒØ %ˆÔÐÐr   r   c                ó"   — | j         €J ‚| j         S r,   )r<   ©r!   s    r   r.   zRequestBodyLimitResponder.scope8   s   € àŒ{Ð&Ð&Ð&ØŒ{Ðr   r
   c                ó"   — | j         €J ‚| j         S r,   )r=   rC   s    r   r/   z!RequestBodyLimitResponder.receive=   s   € àŒ}Ð(Ð(Ð(ØŒ}Ðr   r   c                ó"   — | j         €J ‚| j         S r,   )r>   rC   s    r   r0   zRequestBodyLimitResponder.sendB   s   € àŒzÐ%Ð%Ð%ØŒzÐr   r.   r/   r0   c              ƒ  ó,  K  — t          t          t          z  |                     t          t
          ¦  «        ¦  «        }| j        |t          <   t          t          d z  |                     t          ¦  «        ¦  «        }|�@| j        |_        |j	        |j        k    rt          ‚|                      |||¦  «        ƒ d {V —†S || _        || _        || _        t          |¦  «        | _        | |t          <   	 |                      || j        | j        ¦  «        ƒ d {V —† nG# t          $ r/ | j        r‚ t)          dd¬¦  «        } ||||¦  «        ƒ d {V —† Y nt*          $ r Y nw xY w|                     t          d ¦  «         t/          |t          ¦  «        r|                     t          d ¦  «         d S ||t          <   d S # |                     t          d ¦  «         t/          |t          ¦  «        r|                     t          d ¦  «         n
||t          <   w xY w)Nr   r   ©r   )r   r*   r   ÚgetÚMAX_BODY_SIZE_SCOPE_KEYÚ_MISSINGr)   r4   Ú_BODY_LIMIT_RESPONDER_SCOPE_KEYr@   r   r(   r<   r=   r>   Ú_get_content_lengthr?   Úreceive_with_limitÚsend_with_limitrA   r   r%   ÚpopÚ
isinstance)r!   r.   r/   r0   Úprevious_scope_limitÚactive_responderÚresponses          r   r6   z"RequestBodyLimitResponder.__call__G   sE  è è € Ý#¥C­(¡N°E·I²IÕ>UÕW_Ñ4`Ô4`ÑaÔaÐØ)-Ô);ˆÕ%Ñ&åÕ 9¸DÑ @À%Ç)Â)ÕLkÑBlÔBlÑmÔmÐØÐ'Ø-1Ô-?ÐÔ*ØÔ*Ð-=Ô-KÒKÐKÝ*Ð*ØŸš %¨°$Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7àˆŒØˆŒØˆŒ
Ý1°%Ñ8Ô8ˆÔØ15ˆÕ-Ñ.ð	FØ—(’(˜5 $Ô"9¸4Ô;OÑPÔPÐPÐPÐPÐPÐPÐPÐPÐPøÝ#ð 	1ð 	1ð 	1ØÔ$ð ØÝ(Ð)<È#ÐNÑNÔNˆHØ�(˜5 '¨4Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ý,ð 	ð 	ð 	ØˆDð	øøøð �IŠIÕ5°tÑ<Ô<Ð<ÝÐ.µÑ9Ô9ð FØ—	’	Õ1°4Ñ8Ô8Ð8Ð8Ð8à1E�Õ-Ñ.Ð.Ð.øð	 �IŠIÕ5°tÑ<Ô<Ð<ÝÐ.µÑ9Ô9ð FØ—	’	Õ1°4Ñ8Ô8Ð8Ð8à1E�Õ-Ñ.ÐEÐEÐEÐEs7   Ã3'D ÄF; Ä6EÅF; Å	EÅF; ÅEÅF; Æ;AHr	   c              ƒ  ó"  K  — | j         �| j         | j        k    rt          ‚|                      ¦   «         ƒ d {V —†}|d         dk    rH| xj        t          |                     dd¦  «        ¦  «        z  c_        | j        | j        k    rt          ‚|S )Nr2   zhttp.requestÚbodyr   )r?   r)   r   r/   r@   ÚlenrH   )r!   Úmessages     r   rM   z,RequestBodyLimitResponder.receive_with_limith   s”   è è € ØÔÐ*¨tÔ/BÀTÔEWÒ/WÐ/WÝ&Ð&àŸš™œÐ&Ð&Ð&Ð&Ð&Ð&ˆØ�6Œ?˜nÒ,Ð,ØˆOŒO�s 7§;¢;¨v°sÑ#;Ô#;Ñ<Ô<Ñ<ˆOŒOØŒ Ô!3Ò3Ð3Ý*Ð*Øˆr   rW   c              ƒ  ó  K  — |d         dk    rXd| _         | j        �J| j        | j        k    r:t          dd¬¦  «        } || j        | j        | j        ¦  «        ƒ d {V —† t          ‚|                      |¦  «        ƒ d {V —† d S )Nr2   zhttp.response.startTr   r   rG   )rA   r?   r)   r   r.   r/   r0   r%   )r!   rW   rS   s      r   rN   z)RequestBodyLimitResponder.send_with_limits   s¦   è è € Ø�6Œ?Ð3Ò3Ð3Ø$(ˆDÔ!ØÔ"Ð.°4Ô3FÈÔI[Ò3[Ð3[Ý,Ð-@ÈcÐRÑRÔR�Ø�h˜tœz¨4¬<¸¼ÑCÔCÐCÐCÐCÐCÐCÐCÐCÝ3Ð3Ø�iŠi˜Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ð Ð r   Nr7   )r   r   )r   r
   )r   r   r8   )r   r	   )rW   r	   r   r   )r   r   r   r    Úpropertyr.   r/   r0   r6   rM   rN   r   r   r   r4   r4   -   sÉ   € € € € € ð&ð &ð &ð &ð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „XððFð Fð Fð FðB	ð 	ð 	ð 	ð!ð !ð !ð !ð !ð !r   r4   r.   r   r   ú
int | Nonec                ó’   — t          | ¬¦  «                             d¦  «        }|€d S 	 t          |¦  «        S # t          $ r Y d S w xY w)N)r.   zcontent-length)r   rH   r*   Ú
ValueError)r.   r?   s     r   rL   rL   }   sa   € Ý 5Ð)Ñ)Ô)×-Ò-Ð.>Ñ?Ô?€NØÐØˆtðÝ�>Ñ"Ô"Ð"øÝð ð ð Øˆtˆtðøøøs   ©8 ¸
AÁAN)r.   r   r   rZ   )Ú
__future__r   Útypingr   Ústarlette.datastructuresr   Ústarlette.exceptionsr   Ústarlette.responsesr   Ústarlette.typesr   r	   r
   r   r   rI   rK   r   rJ   r   Ú	Exceptionr%   r'   r4   rL   r   r   r   ú<module>rd      s�  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà3Ð Ø"CÐ ðð ð ð ð ñ ô ð ð ˆ8‰:Œ:€ðFð Fð Fð Fð F˜=ñ Fô Fð Fð
	ð 	ð 	ð 	ð 	 Iñ 	ô 	ð 	ð.ð .ð .ð .ð .ñ .ô .ð .ðM!ð M!ð M!ð M!ð M!ñ M!ô M!ð M!ð`ð ð ð ð ð r   