
    [ik                     |    d dl Z d dlZd dlmZmZmZmZ  G d d      Z G d d      Z G d d      Z	 G d	 d
      Z
y)    N)
NoMoreDataChunkMissingTerminatorInvalidChunkSizeInvalidChunkExtensionc                   2    e Zd Zd Zd Zd Zd ZddZd Zy)	ChunkedReaderc                 p    || _         | j                  |      | _        t        j                         | _        y N)reqparse_chunkedparserioBytesIObuf)selfr   unreaders      c/var/www/html/userprofiledev.eatanceapp.com/venv/lib/python3.12/site-packages/gunicorn/http/body.py__init__zChunkedReader.__init__   s(    ((2::<    c                 0   t        |t              st        d      |dk  rt        d      |dk(  ry| j                  rj| j
                  j                         |k  rM	 | j
                  j                  t        | j                               | j
                  j                         |k  rM| j
                  j                         }|d | ||d  }}t        j                         | _        | j
                  j                  |       |S # t        $ r
 d | _        Y lw xY w)Nzsize must be an integer typer   Size must be positive.r   )
isinstanceint	TypeError
ValueErrorr   r   tellwritenextStopIterationgetvaluer   r   r   sizedataretrests        r   readzChunkedReader.read   s    $$:;;!856619;;((--/D(HHNN4#45 ((--/D( xx  "$KdeT::<t
 % "&DKs   .D DDc                 r   t        j                         }|j                  |       |j                         j	                  d      }|j                         d d dk(  }|dk  rQ|sO| j                  ||       |j                         j	                  d      }|j                         d d dk(  }|dk  r|sO|r#|j                  |j                         dd         y| j                  j                  |j                         d | d      | j                  _	        |j                  |j                         |dz   d         y )	Ns   

      
r   r   T)from_trailer   )
r   r   r   r    findget_dataunreadr   parse_headerstrailers)r   r   r#   r   idxdones         r   parse_trailerszChunkedReader.parse_trailers(   s    jjl		$lln!!+.||~bq!W,AgdMM(C(,,.%%k2C<<>"1%0D Agd OOCLLN12./ HH223<<>$33GVZ2[sQwx01r   c              #     K   | j                  |      \  }}|dkD  r|t        |      kD  r=|t        |      z  }| |j                         }|s
t               |t        |      kD  r=|d |  ||d  }t        |      dk  r'|j                         }|sn||z  }t        |      dk  r'|d d dk7  rt	        |d d       | j                  ||dd        \  }}|dkD  ry y w)Nr   r(   r)   )r#   )parse_chunk_sizelenr&   r   r   )r   r   r"   r%   new_datas        r   r   zChunkedReader.parse_chunked8   s     ,,X6tQhT"D	!
}}$,& T" u+;Dd)a-#==? 	 d)a-
 BQx7",T"1X6600QR0ILT4# Qhs   A$C'A C(4CCNc                    t        j                         }||j                  |       |j                         j	                  d      }|dk  r7| j                  ||       |j                         j	                  d      }|dk  r7|j                         }|d | ||dz   d  }}|j                  dd      ^}}|r#d|d   v rt        d      |j                  d      }t        d	 |D              rt        |      t        |      dk(  rt        |      t        |d
      }|dk(  r	 | j                  ||       y||fS # t        $ r Y yw xY w)Nr)   r   r(      ;      zbare CR not alloweds    	c              3   $   K   | ]  }|d v 
 yw)s   0123456789abcdefABCDEFN ).0ns     r   	<genexpr>z1ChunkedReader.parse_chunk_size.<locals>.<genexpr>a   s     F:aq11:s      )r   N)r   r   r   r    r,   r-   splitr   rstripanyr   r6   r   r3   r   )	r   r   r#   r   r1   line
rest_chunk
chunk_size	chunk_exts	            r   r5   zChunkedReader.parse_chunk_sizeM   sO   jjlIIdOlln!!'*AgMM(C(,,.%%g.C Ag ||~:tC!GH~j "&D!!4
Y	!$+,ABB#**62JF:FF":..z?a":..R(
?##Hj9 J''  s   !D8 8	EEc                 ^    |j                         }|s
t               |j                  |       y r
   )r&   r   r   )r   r   r   r#   s       r   r-   zChunkedReader.get_datao   s#    }},		$r   r
   )	__name__
__module____qualname__r   r&   r3   r   r5   r-   r=   r   r   r   r      s"     
,2 J* (Dr   r   c                       e Zd Zd Zd Zy)LengthReaderc                      || _         || _        y r
   )r   length)r   r   rP   s      r   r   zLengthReader.__init__w   s     r   c                    t        |t              st        d      t        | j                  |      }|dk  rt        d      |dk(  ryt        j                         }| j                  j                         }|rB|j                  |       |j                         |k\  rn| j                  j                         }|rB|j                         }|d | ||d  }}| j                  j                  |       | xj                  |z  c_        |S )Nsize must be an integral typer   r   r   )r   r   r   minrP   r   r   r   r   r&   r   r   r    r.   )r   r"   r   r#   r$   r%   s         r   r&   zLengthReader.read{   s    $$;<<4;;%!856619jjl}}!!#IIdOxxzT!==%%'D	  llnJDE
TT"t
r   NrJ   rK   rL   r   r&   r=   r   r   rN   rN   v   s    r   rN   c                       e Zd Zd Zd Zy)	EOFReaderc                 R    || _         t        j                         | _        d| _        y )NF)r   r   r   r   finished)r   r   s     r   r   zEOFReader.__init__   s     ::<r   c                    t        |t              st        d      |dk  rt        d      |dk(  ry| j                  rZ| j
                  j                         }|d | ||d  }}t        j                         | _        | j
                  j                  |       |S | j                  j                         }|rV| j
                  j                  |       | j
                  j                         |kD  rn| j                  j                         }|rV|sd| _        | j
                  j                         }|d | ||d  }}t        j                         | _        | j
                  j                  |       |S )NrR   r   r   r   T)r   r   r   r   rX   r   r    r   r   r   r   r&   r   r!   s        r   r&   zEOFReader.read   s+   $$;<<!856619==88$$&DUdT$%[Czz|DHHHNN4 J}}!!#HHNN4 xx}}%==%%'D	   DMxx  "$KdeT::<t
r   NrT   r=   r   r   rV   rV      s    
r   rV   c                   @    e Zd Zd Zd Zd ZeZd Zd	dZd	dZ	d	dZ
y)
Bodyc                 D    || _         t        j                         | _        y r
   )readerr   r   r   )r   r]   s     r   r   zBody.__init__   s    ::<r   c                     | S r
   r=   )r   s    r   __iter__zBody.__iter__   s    r   c                 >    | j                         }|s
t               |S r
   )readliner   )r   r$   s     r   __next__zBody.__next__   s    mmo/!
r   c                     |t         j                  S t        |t              st	        d      |dk  rt         j                  S |S )NrR   r   )sysmaxsizer   r   r   )r   r"   s     r   getsizezBody.getsize   s=    <;;D#&;<<AX;;r   Nc                    | j                  |      }|dk(  ry|| j                  j                         k  rZ| j                  j                         }|d | ||d  }}t	        j
                         | _        | j                  j                  |       |S || j                  j                         kD  rW| j                  j                  d      }|sn9| j                  j                  |       || j                  j                         kD  rW| j                  j                         }|d | ||d  }}t	        j
                         | _        | j                  j                  |       |S )Nr   r      )	rf   r   r   r    r   r   r   r]   r&   r!   s        r   r&   z	Body.read   s   ||D!19$((--/!88$$&DUdT$%[Czz|DHHHNN4 JTXX]]_$;;##D)DHHNN4 	 TXX]]_$ xx  "$KdeT::<t
r   c                    | j                  |      }|dk(  ry| j                  j                         }t        j                         | _        g }	 |j                  dd|      }|dk\  r|dz   nt        |      |k\  r|nd}|r3|j                  |d |        | j                  j                  ||d         nH|j                  |       |t        |      z  }| j                  j                  t        d|            }|sndj                  |      S )Nr   r   r:      
rh   )rf   r   r    r   r   r,   r6   appendr   r]   r&   rS   join)r   r"   r#   r$   r1   s        r   ra   zBody.readline   s    ||D!19xx  "::<))E1d+C AX#'3t93D4!C

4:&tCDz*JJtCID;;##CdO4D  xx}r   c                     g }| j                         }|rN|j                  d      }|dk  r|j                  |       d}n!|d |dz    ||dz   d  }}|j                  |       |rN|S )Nrj   r   r   r:   )r&   r,   rk   )r   r"   r$   r#   posrE   s         r   	readlineszBody.readlines  sp    yy{))E"CQw

4 !(37^T#'(^d

4   
r   r
   )rJ   rK   rL   r   r_   rb   r   rf   r&   ra   ro   r=   r   r   r[   r[      s,      D02r   r[   )r   rd   gunicorn.http.errorsr   r   r   r   r   rN   rV   r[   r=   r   r   <module>rq      sG   
 
 
K Kg gT <# #LU Ur   