
    nf                         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	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      Q/var/www/surfInsights/venv3-11/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              #   X  K   |                      |          \  }}|dk    r|t          |          k    rM|t          |          z  }|V  |                                }|st                      |t          |          k    M|d |         V  ||d          }t          |          dk     r/|                                }|sn||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$   new_datas        r   r   zChunkedReader.parse_chunked8   sI     ,,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k    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   r5   r   r2   r   )	r   r   r"   r   r0   line
rest_chunk
chunk_size	chunk_exts	            r   r4   zChunkedReader.parse_chunk_sizeM   s   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 	/":...z??a":...R((
??##Hj9999   9J''s   E- -
E:9E:c                 x    |                                 }|st                      |                    |           d S r	   )r%   r   r   )r   r   r   r"   s       r   r,   zChunkedReader.get_datal   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   rN   s      r   r   zLengthReader.__init__t   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   minrN   r   r   r   r   r%   r   r   r   r-   )r   r!   r   r"   r#   r$   s         r   r%   zLengthReader.readx   s   $$$ 	=;<<<4;%%!8856661993jll}!!## 	(IIdOOOxxzzT!!=%%''D	  	( llnnJDEE
TT"""t
r   NrH   rI   rJ   r   r%   r;   r   r   rL   rL   s   s2              r   rL   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 )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   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   NrR   r;   r   r   rT   rT      s2          
    r   rT   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   r[   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 )NrP   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      )	rd   r   r   r   r   r   r   r[   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   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!!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 )Nrh   r   r   r9   )r%   r+   ri   )r   r!   r#   r"   posrC   s         r   	readlineszBody.readlines  s    yy{{ 	!))E""CQww

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      s	  
 
			 



4 4 4 4 4 4 4 4 4 4d d d d d d d dN       <# # # # # # # #LU U U U U U U U U Ur   