
    7i	                     P    d Z ddlmZmZ ddlmZmZ  G d d      Z G d d      Zy)	zData Chunk Receiver
    )CHUNK_EXT_REONLY_HEXDIG_RE)
BadRequestfind_double_newlinec                   2    e Zd ZdZdZd Zd Zd Zd Zd Z	y)FixedStreamReceiverFNc                      || _         || _        y N)remainbuf)selfclr   s      D/var/www/html/venv/lib/python3.12/site-packages/waitress/receiver.py__init__zFixedStreamReceiver.__init__   s        c                 6    | j                   j                         S r
   r   __len__r   s    r   r   zFixedStreamReceiver.__len__       xx!!r   c                    | j                   }|dk  rd| _        yt        |      }||k  r.| j                  j	                  |d|        d| _         d| _        |S | j                  j	                  |       | xj                   |z  c_         |S )zSee IStreamConsumer   Tr   N)r   	completedlenr   append)r   datarmdatalens       r   receivedzFixedStreamReceiver.received!   sx    [[6!DNd)=HHOOD"I&DK!DNIHHOOD!KK7"KNr   c                 6    | j                   j                         S r
   r   getfiler   s    r   r"   zFixedStreamReceiver.getfile7   r   r   c                     | j                   S r
   r   r   s    r   getbufzFixedStreamReceiver.getbuf:       xxr   )
__name__
__module____qualname__r   errorr   r   r   r"   r%    r   r   r   r      s%    IE","r   r   c                   J    e Zd ZdZdZdZdZdZdZdZ	dZ
d Zd Zd Zd Zd	 Zy)
ChunkedReceiverr   Fr   Nc                     || _         y r
   r$   )r   r   s     r   r   zChunkedReceiver.__init__K   s	    r   c                 6    | j                   j                         S r
   r   r   s    r   r   zChunkedReceiver.__len__N   r   r   c                    | j                   ryt        |      }|rW| j                  }|dkD  r^|d | }| j                  j	                  |       t        |      }||d  }| xj                  |z  c_        | j                  dk(  rd| _        n| j
                  rp| j                  |z   }|j                  d      }|dk  rt        |      dk  r|| _        d}nd| _        |dk(  r|dd  }nt        d      | _	        d| _
        d| _        nh| j                  s| j                  |z   }|j                  d      }|dk  r|| _        d}n,|d | }||dz   d  }d| _        |r|j                  d      }|dk\  r;||d  }	t        j                  |	      }
|
st        d	      | _	        d| _
        	 |S |d | }t        j                  |      st        d
      | _	        d| _
        	 |S t        |d      }|dkD  r|| _        n|d| _
        nt| j                   |z   }|j#                  d      rd| _         |t        |      dz
  z
  S t%        |      }|dk  r
|| _        d}n"d| _         |d | | _        |t        |      |z
  z
  S |rW|S )Nr   Ts   
   r   zChunk not properly terminatedF   ;zInvalid chunk extensionzInvalid chunk size   )r   r   chunk_remainderr   r   validate_chunk_end	chunk_endfindr   r*   all_chunks_receivedcontrol_liner   matchr   inttrailer
startswithr   )r   s	orig_sizer   to_writewrittenposlinesemiextinfovalid_ext_infoszr<   s                r   r   zChunkedReceiver.receivedQ   s    >>F	%%BAvSb6)h-ghK$$/$''1,.2D+((NNQ&ffWo7s1vz%&DNA%(DNaxabE%/0O%P
370 /4D+--%%)ffWo7()D%A Tc7D#')A(+D%#yy19&*45kG-9-?-?-HN#1-78Q-R
;? 8 %V S $(;D-33D9)34H)IDJ7;D4!F ? !r]635D0 8<D4 ,,*%%g.%)DN$Gq(899)'27#*DLA &*DN#*4C=DL$Gs(:;;M P r   c                 6    | j                   j                         S r
   r!   r   s    r   r"   zChunkedReceiver.getfile   r   r   c                     | j                   S r
   r$   r   s    r   r%   zChunkedReceiver.getbuf   r&   r   )r'   r(   r)   r4   r5   r9   r6   r8   r<   r   r*   r   r   r   r"   r%   r+   r   r   r-   r-   >   sG    OLIGIE
"ob"r   r-   N)	__doc__waitress.rfc7230r   r   waitress.utilitiesr   r   r   r-   r+   r   r   <module>rM      s)    : >& &RH Hr   