o
    Dh.                     @   sF  d dl Z ddlmZmZmZmZ ddlT ddlT ddlm	Z	m
Z
mZ dgZe edZe dZd	d
 Zdd Ze edZdd Ze edZdd ZG dd dZe edZG dd deZG dd deZdd Zeefeeefeee feee!feee"feee#feee!feee"feee#fee$eeedi
Z%dS )    N   )chunk_headerheader_fieldrequest_linestatus_line)*)LocalProtocolErrorRemoteProtocolErrorvalidateREADERSasciis   [ \t]+c                 c   s    t | }d }|D ]2}t|}|r2|d u rtdt|ts#t|}|d7 }||| d  7 }q	|d ur9|V  |}q	|d urE|V  d S d S )Nz%continuation line at start of headers    )iterobs_fold_rematchr   
isinstance	bytearrayend)linesitlastliner    r   G/var/www/html/env_mimamsha/lib/python3.10/site-packages/h11/_readers.py_obsolete_line_fold#   s$   


r   c                 c   s4    t | D ]}ttt|}|d |d fV  qd S )N
field_namefield_value)r   r
   header_field_rebytes)r   r   matchesr   r   r   _decode_header_lines7   s
   r    c                 C   sR   |   }|d u r
d S |stdtt|d }tdtt|dd  dd|S )Nzno request line receivedr   r   Theaders_parsedr   )maybe_extract_linesr   r
   request_line_reRequestlistr    )bufr   r   r   r   r   maybe_read_from_IDLE_clientD   s   r)   c                 C   s   |   }|d u r
d S |stdtt|d }|d d u r!d|d< t|d  }|d< |dk r1tnt}|d
tt|dd  dd	|S )Nzno response line receivedr   reason    status_code   r   Tr!   r   )	r$   r   r
   status_line_reintInformationalResponseResponser'   r    )r(   r   r   r,   class_r   r   r   $maybe_read_from_SEND_RESPONSE_serverS   s   r3   c                   @   $   e Zd Zdd Zdd Zdd ZdS )ContentLengthReaderc                 C   s   || _ || _d S N)_length
_remaining)selflengthr   r   r   __init__e   s   
zContentLengthReader.__init__c                 C   sD   | j dkrt S || j }|d u rd S |  j t|8  _ t|dS )Nr   data)r8   EndOfMessagemaybe_extract_at_mostlenDatar9   r(   r=   r   r   r   __call__i   s   

zContentLengthReader.__call__c                 C   s   t d| j| j | j)Nz]peer closed connection without sending complete message body (received {} bytes, expected {}))r	   formatr7   r8   r9   r   r   r   read_eofr   s   zContentLengthReader.read_eofN__name__
__module____qualname__r;   rC   rF   r   r   r   r   r5   d   s    	r5   c                   @   r4   )ChunkedReaderc                 C   s   d| _ d| _d| _d S )Nr   F)_bytes_in_chunk_bytes_to_discard_reading_trailerrE   r   r   r   r;      s   
zChunkedReader.__init__c                 C   s>  | j r| }|d u rd S ttt|dS | jdkr7|| j}|d u r'd S |  jt|8  _| jdkr7d S | jdks>J | jdkrm|	d}|d u rNd S t
t|}tt|d dd| _| jdkrjd| _ | |S d}nd}| jdksvJ || j}|d u rd S |  jt|8  _| jdkrd	| _d}nd}t|||d
S )N)r"   r   s   

chunk_size   )baseTF   )r=   chunk_start	chunk_end)rN   r$   r>   r'   r    rM   r?   r@   rL   maybe_extract_until_nextr
   chunk_header_rer/   r   rA   )r9   r(   r   r=   r   r   rS   rT   r   r   r   rC      sD   






zChunkedReader.__call__c                 C   s   t d)NzVpeer closed connection without sending complete message body (incomplete chunked read))r	   rE   r   r   r   rF      s   zChunkedReader.read_eofNrG   r   r   r   r   rK   ~   s    +rK   c                   @   s   e Zd Zdd Zdd ZdS )Http10Readerc                 C   s    | d}|d u rd S t|dS )Niɚ;r<   )r?   rA   rB   r   r   r   rC      s   

zHttp10Reader.__call__c                 C   s   t  S r6   )r>   rE   r   r   r   rF      s   zHttp10Reader.read_eofN)rH   rI   rJ   rC   rF   r   r   r   r   rW      s    rW   c                 C   s   | rt dd S )NzGot data when expecting EOF)r   )r(   r   r   r   expect_nothing   s   rX   )chunkedzcontent-lengthzhttp/1.0)&re_abnfr   r   r   r   _events_state_utilr   r	   r
   __all__compileencoder   r   r   r    r%   r)   r.   r3   r5   rV   objectrK   rW   rX   CLIENTIDLESERVERSEND_RESPONSEDONE
MUST_CLOSECLOSED	SEND_BODYr   r   r   r   r   <module>   sD   

;