
    ޕg                     x    d dl Z d dlZd dl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InvalidChunkSizec                   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      Q/var/www/html/AdoubleTech/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                 j   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|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'      ;   s    	c              3   $   K   | ]  }|d v 
 yw)s   0123456789abcdefABCDEFN ).0ns     r   	<genexpr>z1ChunkedReader.parse_chunk_size.<locals>.<genexpr>^   s     Faq11Fs      )r   N)r   r   r   r   r+   r,   splitrstripanyr   r5   r   r2   r   )	r   r   r"   r   r0   line
rest_chunk
chunk_size	chunk_exts	            r   r4   zChunkedReader.parse_chunk_sizeM   s7   jjlIIdOlln!!'*AgMM(C(,,.%%g.C Ag ||~:tC!GH~j "&D!!4
Y#**62JF:FF":..z?a":..R(
?##Hj9 J''  s   D& &	D21D2c                 ^    |j                         }|s
t               |j                  |       y r	   )r%   r   r   )r   r   r   r"   s       r   r,   zChunkedReader.get_datal   s#    }},		$r   r	   )	__name__
__module____qualname__r   r%   r2   r   r4   r,   r;   r   r   r   r      s!     
,2 J*(>r   r   c                       e Zd Zd Zd Zy)LengthReaderc                      || _         || _        y r	   )r   length)r   r   rN   s      r   r   zLengthReader.__init__t   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   minrN   r   r   r   r   r%   r   r   r   r-   )r   r!   r   r"   r#   r$   s         r   r%   zLengthReader.readx   s    $$;<<4;;%!856619jjl}}!!#IIdOxxzT!==%%'D	  llnJDE
TT"t
r   NrH   rI   rJ   r   r%   r;   r   r   rL   rL   s   s    r   rL   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 )NrP   r   r   r   T)r   r   r   r   rV   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   NrR   r;   r   r   rT   rT      s    
r   rT   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 )NrP   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      )	rd   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   r9      
rf   )rd   r   r   r   r   r+   r5   appendr   r[   r%   rQ   join)r   r!   r"   r#   r0   s        r   r_   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 )Nrh   r   r   r9   )r%   r+   ri   )r   r!   r#   r"   posrC   s         r   	readlineszBody.readlines  sp    yy{))E"CQw

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

4   
r   r	   )rH   rI   rJ   r   r]   r`   r   rd   r%   r_   rm   r;   r   r   rY   rY      s,      D02r   rY   )
r   rb   gunicorn.http.errorsr   r   r   r   rL   rT   rY   r;   r   r   <module>ro      sE   
 
 
4 4d dN <# #LU Ur   