Format: application/x-python-code
⬇ Download File (6.1 KB)
   1  o
   2  
   3  .'h� �@s\UddlZddlmZmZmZmZmZmZmZm	Z	m
   4  Z
   5  ddlmZm
   6  Z
   7  mZmZddlmZmZmZmZmZddlmZddlmZmZmZmZmZmZmZm Z ddl!m"Z"m#Z#m$Z$m%Z%d	gZ&e�'e
   8  �(d
   9  ��Z)e�'d�Z*dee+d
  10  ee+fdd�Z,dee+d
  11  eee+e+ffdd�Z-e�'e�(d
  12  ��Z.ded
  13  eefdd�Z/e�'e�(d
  14  ��Z0ded
  15  e
  16  eedffdd�Z1Gdd�d�Z2e�'e�(d
  17  ��Z3Gdd�d�Z4Gdd�d�Z5ded
  18  dfdd�Z6ee
  19  e	e$ee	e$e	e$ffe
  20  edefee7edeffffZ8eefe/e efe1e efe1eefe6eefe6eefe6e efe6e efe6e efe6ee4e2e5d �i
  21  Z9e8e:d	<dS)!�N)	�Any�Callable�Dict�Iterable�NoReturn�Optional�Tuple�Type�Union�)�chunk_header�header_field�request_line�status_line)�Data�EndOfMessage�InformationalResponse�Request�Response)�
  22  ReceiveBuffer)�CLIENT�CLOSED�DONE�IDLE�
  23  MUST_CLOSE�	SEND_BODY�
  24  SEND_RESPONSE�SERVER)�LocalProtocolError�RemoteProtocolError�Sentinel�validate�READERS�asciis[ \t]+�lines�returnccs��t|�}d}|D]2}t�|�}|r2|durtd��t|t�s#t|�}|d7}|||��d�7}q	|dur9|V|}q	|durE|VdSdS)Nz%continuation line at start of headers� )�iter�obs_fold_re�matchr�
  25  isinstance�	bytearray�end)r$�it�last�liner)�r0�BC:\Users\shubh\Videos\agent\nova\Lib\site-packages\h11/_readers.py�_obsolete_line_fold+s$�
  26  
  27  
  28  �r2ccs4�t|�D]}tt|d|�}|d|dfVqdS)Nzillegal header line: {!r}�
  29  field_nameZfield_value)r2r!�header_field_re)r$r/�matchesr0r0r1�_decode_header_lines@s
  30  ��r6�bufcCsj|��}|dur|��rtd��dS|std��tt|dd|d�}tdtt|dd���dd�|��S)	N�illegal request linezno request line receivedrzillegal request line: {!r}rT)�headers�_parsedr0)�maybe_extract_lines�+is_next_line_obviously_invalid_request_linerr!�request_line_rer�listr6)r7r$r5r0r0r1�maybe_read_from_IDLE_clientKs���r?cCs�|��}|dur|��rtd��dS|std��tt|dd|d�}|ddur+dn|d}|ddur7dn|d}t|d	�}|d
  31  krGtnt}|tt	|dd���d|||d
  32  �S)Nr8zno response line receivedrzillegal status line: {!r}�http_versions1.1�reason��status_code��rT)r9r:rCrAr@)
  33  r;r<rr!�status_line_re�intrrr>r6)r7r$r5r@rArC�class_r0r0r1�$maybe_read_from_SEND_RESPONSE_server^s*���rHc@sHeZdZdeddfdd�Zdedeeedffdd�Z	de
  34  fd	d
  35  �ZdS)�ContentLengthReader�lengthr%NcCs||_||_dS�N)�_length�
  36  _remaining)�selfrJr0r0r1�__init__{s
  37  zContentLengthReader.__init__r7cCsD|jdkrt�S|�|j�}|durdS|jt|�8_t|d�S)Nr��data)rMr�maybe_extract_at_most�lenr�rNr7rQr0r0r1�__call__s
  38  
  39  zContentLengthReader.__call__cCstd�|j|j|j���)Nz]peer closed connection without sending complete message body (received {} bytes, expected {}))r�formatrLrM�rNr0r0r1�read_eof�s��zContentLengthReader.read_eof)�__name__�
  40  __module__�__qualname__rFrOrr
  41  rrrUrrXr0r0r0r1rIzs	rIc@s@eZdZd
  42  dd�Zdedeeedffdd�Zde	fdd	�Z
  43  dS)�
  44  ChunkedReaderr%NcCsd|_d|_d|_dS)NrF)�_bytes_in_chunk�_bytes_to_discard�_reading_trailerrWr0r0r1rO�s
  45  zChunkedReader.__init__r7cCs<|jr|��}|dur
  46  dSttt|��d�S|jdkr7|�|j�}|dur'dS|jt|�8_|jdkr7dS|jdks>J�|jdkrl|�	�}|durMdSt
  47  t|d|�}t|ddd�|_|jdkrid|_||�Sd}nd}|jdksuJ�|�|j�}|dur�dS|jt|�8_|jdkr�d	|_d}nd}t
  48  |||d
  49  �S)N)r9rzillegal chunk header: {!r}�
  50  chunk_size�)�baseTF�)rQ�chunk_start�	chunk_end)r_r;rr>r6r^rRrSr]Zmaybe_extract_next_liner!�chunk_header_rerFr)rNr7r$rQrr5rdrer0r0r1rU�sN
  51  
  52  
  53  �
  54  
  55  zChunkedReader.__call__cCstd��)NzVpeer closed connection without sending complete message body (incomplete chunked read))rrWr0r0r1rX�s�zChunkedReader.read_eof)r%N)rYrZr[rOrr
  56  rrrUrrXr0r0r0r1r\�s
  57  .r\c@s0eZdZdedeefdd�Zdefdd�ZdS)�Http10Readerr7r%cCs |�d�}|durdSt|d�S)Ni�ɚ;rP)rRrrTr0r0r1rU�s
  58  
  59  zHttp10Reader.__call__cCst�SrK)rrWr0r0r1rX�szHttp10Reader.read_eofN)	rYrZr[rrrrUrrXr0r0r0r1rg�srgcCs|rtd��dS)NzGot data when expecting EOF)r)r7r0r0r1�expect_nothing�srh.)�chunkedzcontent-lengthzhttp/1.0);�re�typingrrrrrrrr	r
  60  Z_abnfrr
  61  rrZ_eventsrrrrrZ_receivebufferr�_staterrrrrrrrZ_utilrrr r!�__all__�compile�encoder4r(�bytesr2r6r=r?rErHrIrfr\rgrh�strZReadersTyper"�__annotations__r0r0r0r1�<module>sb
  62  ,(
  63  
  64  �
  65  ��
  66  �>"����