a
�DOg�� � @ sJ d dl Zd dlZd dlZd dlZd dlZd dlZd dlZd dlZ d dl
mZ g d�ZdZ
dZdZdZdZd Ze� �ejj� d
d� ejj�� D �ZdZd
ZdZe�d�jZe�d�jZ e�d�Z!e�d�Z"h d�Z#d?dd�Z$G dd� dej%j&�Z'dd� Z(e'fdd�Z)G dd� dej*�Z+G dd � d �Z,zd dl-Z-W n e.�yD Y n0 G d!d"� d"e,�Z/e�0d"� G d#d$� d$e1�Z2G d%d&� d&e2�Z3G d'd(� d(e2�Z4G d)d*� d*e2�Z5G d+d,� d,e2�Z6G d-d.� d.e2�Z7G d/d0� d0e2�Z8G d1d2� d2e2�Z9G d3d4� d4e9�Z:G d5d6� d6e9�Z;G d7d8� d8e9�Z<G d9d:� d:e2�Z=G d;d<� d<e2�Z>G d=d>� d>e?e=�Z@e2ZAdS )@� N)�urlsplit)�HTTPResponse�HTTPConnection�
HTTPException�NotConnected�UnknownProtocol�UnknownTransferEncoding�UnimplementedFileMode�IncompleteRead�
InvalidURL�ImproperConnectionState�CannotSendRequest�CannotSendHeader�ResponseNotReady�
BadStatusLine�LineTooLong�RemoteDisconnected�error� responses�P i� ZUNKNOWNZIdlezRequest-startedzRequest-sentc C s i | ]}||j �qS � )�phrase)�.0�vr r �#/usr/lib64/python3.9/http/client.py�
<dictcomp>k � r i i �d s [^:\s][^:\r\n]*s \n(?![ \t])|\r(?![ \t\n])z[ - ]z[ -]> ZPATCH�PUTZPOST�datac
C sj z| � d�W S tyd } z@t|j|j|j|jd|�� | |j|j� |f �d �W Y d }~n
d }~0 0 d S )N�latin-1z`%s (%.20r) is not valid Latin-1. Use %s.encode('utf-8') if you want to send it encoded in UTF-8.)�encode�UnicodeEncodeError�encoding�object�start�end�title)r �name�errr r r �_encode� s ���r* c @ s e Zd Zdd� ZdS )�HTTPMessagec C sj |� � d }t|�}g }d}| �� D ]@}|d |� � � |krBd}n|d d� �� sVd}|r$|�|� q$|S )N�:r � )�lower�len�keys�isspace�append)�selfr( �nZlstZhit�liner r r �getallmatchingheaders� s
z!HTTPMessage.getallmatchingheadersN)�__name__�
__module__�__qualname__r6 r r r r r+ � s r+ c C sX g }| � td �}t|�tkr&td��|�|� t|�tkrHtdt ��|dv rqTq|S )Nr- �header linezgot more than %d headers��
�
r )�readline�_MAXLINEr/ r r2 �_MAXHEADERSr )�fp�headersr5 r r r �
_read_headers� s
rC c C s, t | �}d�|��d�}tjj|d��|�S )Nr �
iso-8859-1)�_class)rC �join�decode�email�parserZParserZparsestr)rA rE rB Zhstringr r r �
parse_headers� s
rJ c s e Zd Zd@dd�Zdd� Zdd� Zd d
� Zdd� Z� fd
d�Z� fdd�Z dd� Z
dd� ZdAdd�Zdd� Z
dd� Zdd� Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� ZdBd(d)�ZdCd*d+�ZdD� fd,d-� Zd.d/� Zd0d1� Zd2d3� ZdEd4d5�Zd6d7� Zd8d9� Zd:d;� Zd<d=� Zd>d?� Z � Z!S )Fr r Nc C sR |� d�| _|| _|| _d | _| _t| _t| _t| _ t| _
t| _t| _t| _
d S )N�rb)�makefilerA �
debuglevel�_methodrB �msg�_UNKNOWN�version�status�reason�chunked�
chunk_left�length�
will_close)r3 �sockrM �method�urlr r r �__init__� s zHTTPResponse.__init__c C s t | j�td �d�}t|�tkr*td��| jdkrBtdt|�� |sNt d��z|�
d d�\}}}W nB ty� z|�
d d�\}}d}W n ty� d}Y n0 Y n0 |�d �s�| �
� t|��z$t|�}|d
k s�|dkr�t|��W n t�y t|��Y n0 |||fS )Nr- rD zstatus liner zreply:z-Remote end closed connection without response� � zHTTP/r i� )�strrA r>