
    Tf7                         d dl Z d dlZd dlmZmZmZ  G d de          Z G d de          Z G d de          Z	 G d	 d
e          Z
dS )    N)
NoMoreDataChunkMissingTerminatorInvalidChunkSizec                   4    e Zd Zd Zd Zd Zd ZddZd ZdS )	ChunkedReaderc                 x    || _         |                     |          | _        t          j                    | _        d S N)reqparse_chunkedparserioBytesIObuf)selfr
   unreaders      D/var/www/html/env/lib/python3.11/site-packages/gunicorn/http/body.py__init__zChunkedReader.__init__   s/    ((22:<<    c                 R   t          |t                    st          d          |dk     rt          d          |dk    rdS | j        r| j                                        |k     rb	 | j                            t          | j                             n# t          $ r
 d | _        Y n!w xY w| j                                        |k     b| j        
                                }|d |         ||d          }}t          j                    | _        | j                            |           |S )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    $$$ 	<:;;;!8856661993; 	(--//D((HNN4#4#45555$   "&DKE (--//D(( x  ""$KdeeT:<<t
s   ',B B('B(c                    t          j                    }|                    |           |                                                    d          }|                                d d         dk    }|dk     rg|se|                     ||           |                                                    d          }|                                d d         dk    }|dk     r|e|r1|                    |                                dd                     dS | j                            |                                d |         d          | j        _	        |                    |                                |dz   d                     d S )	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)   sH   jll		$llnn!!+..||~~bqb!W,AggdgMM(C(((,,..%%k22C<<>>"1"%0D Aggdg  	OOCLLNN122.///3 H223<<>>$3$3GVZ2[[sQwxx011111r   c              #   N  K   |                      |          \  }}|dk    r|t          |          k    rM|t          |          z  }|V  |                                }|st                      |t          |          k    M|d |         V  ||d          }t          |          dk     r*||                                z  }t          |          dk     *|d d         dk    rt	          |d d                   |                      ||dd                    \  }}|dk    d S d S )Nr   r'   r(   )r"   )parse_chunk_sizelenr%   r   r   )r   r   r!   r$   s       r   r   zChunkedReader.parse_chunked9   s7     ,,X66tQhhT""D		!


}} '$,,& T"" uu+;Dd))a--' d))a--BQBx7"",T"1"X66600QRR0IILT4 Qhhhhhhr   Nc                    t          j                    }||                    |           |                                                    d          }|dk     rC|                     ||           |                                                    d          }|dk     C|                                }|d |         ||dz   d          }}|                    dd          ^}}|r|                    d          }t          d |D                       rt          |          t          |d          }|dk    r*	 |                     ||           n# t          $ r Y nw xY wd	S ||fS )
Nr(   r   r'      ;   s    	c              3      K   | ]}|d vV  	dS )s   0123456789abcdefABCDEFN ).0ns     r   	<genexpr>z1ChunkedReader.parse_chunk_size.<locals>.<genexpr>\   s(      FFaq11FFFFFFr      )r   N)r   r   r   r   r+   r,   splitrstripanyr   r   r2   r   )	r   r   r"   r   r0   line
rest_chunk
chunk_size	chunk_exts	            r   r4   zChunkedReader.parse_chunk_sizeK   st   jllIIdOOOllnn!!'**AggMM(C(((,,..%%g..C Agg ||~~:tC!GHH~j "&D!!4!4
Y 	3#**622JFF:FFFFF 	/":...R((
??##Hj9999   9J''s   4E 
EEc                 x    |                                 }|st                      |                    |           d S r	   )r%   r   r   )r   r   r   r"   s       r   r,   zChunkedReader.get_datah   s4    }} 	,,		$r   r	   )	__name__
__module____qualname__r   r%   r2   r   r4   r,   r:   r   r   r   r      sv             
  ,2 2 2 J J J$( ( ( (:    r   r   c                       e Zd Zd Zd ZdS )LengthReaderc                 "    || _         || _        d S r	   )r   length)r   r   rM   s      r   r   zLengthReader.__init__p   s     r   c                 D   t          |t                    st          d          t          | j        |          }|dk     rt          d          |dk    rdS t          j                    }| j        	                                }|rI|
                    |           |                                |k    rn| j        	                                }|I|                                }|d |         ||d          }}| j                            |           | xj        |z  c_        |S )Nsize must be an integral typer   r   r   )r   r   r   minrM   r   r   r   r   r%   r   r   r   r-   )r   r!   r   r"   r#   r$   s         r   r%   zLengthReader.readt   s   $$$ 	=;<<<4;%%!8856661993jll}!!## 	(IIdOOOxxzzT!!=%%''D	  	( llnnJDEE
TT"""t
r   NrG   rH   rI   r   r%   r:   r   r   rK   rK   o   s2              r   rK   c                       e Zd Zd Zd ZdS )	EOFReaderc                 R    || _         t          j                    | _        d| _        d S )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dS | j        ra| j                                        }|d |         ||d          }}t          j                    | _        | j        	                    |           |S | j
                                        }|rS| j        	                    |           | j                                        |k    rn| j
                                        }|S|sd| _        | j                                        }|d |         ||d          }}t          j                    | _        | j        	                    |           |S )NrO   r   r   r   T)r   r   r   r   rU   r   r   r   r   r   r   r%   r   r    s        r   r%   zEOFReader.read   sl   $$$ 	=;<<<!8856661993= 	8$$&&DUdUT$%%[Cz||DHHNN4   J}!!## 	(HNN4   x}}%%=%%''D	  	(  	! DMx  ""$KdeeT:<<t
r   NrQ   r:   r   r   rS   rS      s2          
    r   rS   c                   B    e Zd Zd Zd Zd ZeZd Zd	dZd	dZ	d	dZ
dS )
Bodyc                 D    || _         t          j                    | _        d S r	   )readerr   r   r   )r   rZ   s     r   r   zBody.__init__   s    :<<r   c                     | S r	   r:   )r   s    r   __iter__zBody.__iter__   s    r   c                 N    |                                  }|st                      |S r	   )readliner   )r   r#   s     r   __next__zBody.__next__   s&    mmoo 	"//!
r   c                     |t           j        S t          |t                    st	          d          |dk     rt           j        S |S )NrO   r   )sysmaxsizer   r   r   )r   r!   s     r   getsizezBody.getsize   sF    <;D#&& 	;<<<AXX;r   Nc                    |                      |          }|dk    rdS || j                                        k     ra| j                                        }|d |         ||d          }}t	          j                    | _        | j                            |           |S || j                                        k    rT| j                            d          }|sn7| j                            |           || j                                        k    T| j                                        }|d |         ||d          }}t	          j                    | _        | j                            |           |S )Nr   r      )	rc   r   r   r   r   r   r   rZ   r%   r    s        r   r%   z	Body.read   s<   ||D!!1993$(--//!!8$$&&DUdUT$%%[Cz||DHHNN4   JTX]]__$$;##D))D HNN4   	 TX]]__$$ x  ""$KdeeT:<<t
r   c                 j   |                      |          }|dk    rdS | j                                        }t          j                    | _        g }	 |                    dd|          }|dk    r|dz   nt          |          |k    r|nd}|r@|                    |d |                    | j                            ||d                     nS|                    |           |t          |          z  }| j	        
                    t          d|                    }|snd                    |          S )Nr   r   r8      
re   )rc   r   r   r   r   r+   r5   appendr   rZ   r%   rP   join)r   r!   r"   r#   r0   s        r   r^   zBody.readline   s+   ||D!!1993x  "":<<	))E1d++C AXX#''3t993D3D44!C 

4:&&&tCDDz***JJtCIID;##CdOO44D 	 xx}}r   c                     g }|                                  }|rd|                    d          }|dk     r|                    |           d}n/|d |dz            ||dz   d          }}|                    |           |d|S )Nrg   r   r   r8   )r%   r+   rh   )r   r!   r#   r"   posrB   s         r   	readlineszBody.readlines   s    yy{{ 	!))E""CQww

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

4     	! 
r   r	   )rG   rH   rI   r   r\   r_   r   rc   r%   r^   rl   r:   r   r   rX   rX      s                  D     0   2     r   rX   )r   ra   gunicorn.http.errorsr   r   r   objectr   rK   rS   rX   r:   r   r   <module>ro      s   
			 



4 4 4 4 4 4 4 4 4 4_ _ _ _ _F _ _ _D    6   <# # # # # # # #LU U U U U6 U U U U Ur   