
    $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y)    )annotations)cast)Headers)HTTPException)PlainTextResponse)ASGIAppMessageReceiveScopeSendzstarlette.max_body_sizezstarlette._body_limit_responderc                      e Zd ZdZy)_Missing N)__name__
__module____qualname__	__slots__r       c/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/starlette/middleware/body_limit.pyr   r      s    Ir   r   c                        e Zd Zd fdZ xZS )_RequestBodyTooLargec                (    t         |   dd       y )N  Content Too Large)status_codedetail)super__init__)self	__class__s    r   r   z_RequestBodyTooLarge.__init__   s    S1DEr   )returnNone)r   r   r   r   __classcell__)r    s   @r   r   r      s    F Fr   r   c                      e Zd Zy)_RequestBodyLimitResponseSentN)r   r   r   r   r   r   r%   r%      s    r   r%   c                       e Zd ZdZddZddZy)RequestBodyLimitMiddlewarez-Limit the total size of an HTTP request body.c                     || _         || _        y N)appmax_body_sizer   r*   r+   s      r   r   z#RequestBodyLimitMiddleware.__init__!   s    *r   c                   K   |d   dk7  r| j                  |||       d {   S t        | j                   | j                        } ||||       d {    y 7 77 w)Ntypehttp)r*   RequestBodyLimitResponderr+   )r   scopereceivesend	responders        r   __call__z#RequestBodyLimitMiddleware.__call__%   s[     =F"%$777-dhh8J8JK	w--- 8 	.s!   AA1AAAANr*   r   r+   intr!   r"   r1   r   r2   r
   r3   r   r!   r"   )r   r   r   __doc__r   r5   r   r   r   r'   r'      s    7+.r   r'   c                  b    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
y)r0   c                t    || _         || _        d | _        d | _        d | _        d | _        d| _        d| _        y )Nr   F)r*   r+   _scope_receive_sendcontent_length
total_sizeresponse_startedr,   s      r   r   z"RequestBodyLimitResponder.__init__.   s=    *$((,"&
*. %r   c                6    | j                   J | j                   S r)   )r<   r   s    r   r1   zRequestBodyLimitResponder.scope8   s    {{&&&{{r   c                6    | j                   J | j                   S r)   )r=   rC   s    r   r2   z!RequestBodyLimitResponder.receive=   s    }}(((}}r   c                6    | j                   J | j                   S r)   )r>   rC   s    r   r3   zRequestBodyLimitResponder.sendB   s    zz%%%zzr   c                  K   t        t        t        z  |j                  t        t
                    }| j                  |t        <   t        t        d z  |j                  t                    }|K| j                  |_        |j                  |j                  kD  rt        | j                  |||       d {   S || _        || _        || _        t        |      | _        | |t        <   	 | j                  || j"                  | j$                         d {    |j-                  t        d        t/        |t              r|j-                  t        d        y ||t        <   y 7 7 M# t        $ r0 | j&                  r t)        dd      } ||||       d {  7   Y t*        $ r Y w xY w# |j-                  t        d        t/        |t              r|j-                  t        d        w ||t        <   w xY ww)Nr   r   r   )r   r7   r   getMAX_BODY_SIZE_SCOPE_KEY_MISSINGr+   r0   _BODY_LIMIT_RESPONDER_SCOPE_KEYr@   r   r*   r<   r=   r>   _get_content_lengthr?   receive_with_limitsend_with_limitrA   r   r%   pop
isinstance)r   r1   r2   r3   previous_scope_limitactive_responderresponses          r   r5   z"RequestBodyLimitResponder.__call__G   s    #C(NEII>UW_4`a)-););%& 9D @%))LkBlm'-1-?-?***-=-K-KK**%$777
1%815-.	F((5$"9"94;O;OPPP II5t<.9		1481E-.- 8 Q# 	1$$()<#NH5'4000, 		 II5t<.9		1481E-.sn   B1G23E42G2'*E! EE! AG2E! !0F$FF$F' F$!F' #F$$F' 'AG//G2c                B  K   | j                   | j                   | j                  kD  rt        | j                          d {   }|d   dk(  rM| xj                  t        |j                  dd            z  c_        | j                  | j                  kD  rt        |S 7 [w)Nr.   zhttp.requestbodyr   )r?   r+   r   r2   r@   lenrH   )r   messages     r   rM   z,RequestBodyLimitResponder.receive_with_limith   s     *t/B/BTEWEW/W&&&6?n,OOs7;;vs#;<<O!3!33** 's   ?BBABc                4  K   |d   dk(  rod| _         | j                  \| j                  | j                  kD  rCt        dd      } || j                  | j
                  | j                         d {    t        | j                  |       d {    y 7 $7 w)Nr.   zhttp.response.startTr   r   rG   )rA   r?   r+   r   r1   r2   r3   r%   )r   rW   rS   s      r   rN   z)RequestBodyLimitResponder.send_with_limits   s     6?33$(D!"".43F3FI[I[3[,-@cRtzz4<<CCC33ii    D s$   A-B/B0BBBBNr6   )r!   r   )r!   r
   )r!   r   r8   )r!   r	   )rW   r	   r!   r"   )r   r   r   r   propertyr1   r2   r3   r5   rM   rN   r   r   r   r0   r0   -   sT    &      FB	!r   r0   c                t    t        |       j                  d      }|y 	 t        |      S # t        $ r Y y w xY w)N)r1   zcontent-length)r   rH   r7   
ValueError)r1   r?   s     r   rL   rL   }   sC    5)--.>?N>"" s   
+ 	77N)r1   r   r!   z
int | None)
__future__r   typingr   starlette.datastructuresr   starlette.exceptionsr   starlette.responsesr   starlette.typesr   r	   r
   r   r   rI   rK   r   rJ   r   	Exceptionr%   r'   r0   rL   r   r   r   <module>rc      so    "  , . 1 B B3 "C   :F= F
	I 	. .M! M!`r   