
    O=d                         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:\Sites\api_v1\venv\Lib\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 Nsize must be an integral 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 |                   | j        _	        |                    |                                |dz   d                     d S )Ns   

      
r   r      )
r   r   r   r!   findget_dataunreadr
   parse_headerstrailers)r   r   r$   r   idxdones         r   parse_trailerszChunkedReader.parse_trailers)   sB   jll		$llnn!!+..||~~bqb!W,AggdgMM(C(((,,..%%k22C<<>>"1"%0D Aggdg  	OOCLLNN122.///3 H223<<>>$3$3GHH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          d                                         }	 t          |d          }n# t          $ r t          |          w xY w|dk    r*	 |                     ||           n# t          $ r Y nw xY wdS ||fS )Nr*   r   r)      ;      )r   N)r   r   r   r!   r,   r-   splitstripr   r   r   r3   r   )r   r   r$   r   r1   line
rest_chunk
chunk_sizes           r   r5   zChunkedReader.parse_chunk_sizeK   sh   jllIIdOOOllnn!!'**AggMM(C(((,,..%%g..C Agg ||~~:tC!GHH~jZZa((+1133
	/Z,,JJ 	/ 	/ 	/":...	/ ??##Hj9999   9J''s   5D D *E 
EEc                 x    |                                 }|st                      |                    |           d S r	   )r'   r   r   )r   r   r   r$   s       r   r-   zChunkedReader.get_dataf   s4    }} 	,,		$r   r	   )	__name__
__module____qualname__r   r'   r3   r   r5   r-    r   r   r   r      sv             
  ,2 2 2 J J J$( ( ( (6    r   r   c                       e Zd Zd Zd ZdS )LengthReaderc                 "    || _         || _        d S r	   )r   length)r   r   rH   s      r   r   zLengthReader.__init__n   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 r   )r   r   r   minrH   r   r   r   r   r'   r   r   r!   r.   )r   r#   r   r$   r%   r&   s         r   r'   zLengthReader.readr   s   $$$ 	=;<<<4;%%!8856661993jll}!!## 	(IIdOOOxxzzT!!=%%''D	  	( llnnJDEE
TT"""t
r   NrA   rB   rC   r   r'   rD   r   r   rF   rF   m   s2              r   rF   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 )Nr   r   r   r   T)r   r   r   r   rO   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   NrK   rD   r   r   rM   rM      s2          
    r   rM   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   rT   s     r   r   zBody.__init__   s    :<<r   c                     | S r	   rD   )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 )Nr   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      )	r]   r   r   r!   r   r   r   rT   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      
r_   )r]   r   r!   r   r   r,   r6   appendr   rT   r'   rJ   join)r   r#   r$   r%   r1   s        r   rX   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 )Nra   r   r   r9   )r'   r,   rb   )r   r#   r%   r$   posr=   s         r   	readlineszBody.readlines   s    yy{{ 	!))E""CQww

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

4     	! 
r   r	   )rA   rB   rC   r   rV   rY   r   r]   r'   rX   rf   rD   r   r   rR   rR      s                  D     0   2     r   rR   )r   r[   gunicorn.http.errorsr   r   r   objectr   rF   rM   rR   rD   r   r   <module>ri      s   
			 



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