← Back
Editing: client.cpython-38.pyc
U s�@g) � @ s> d Z ddlmZmZ ddlZddlZddlZzddlmZm Z m Z W n8 ek r| ddlm Z m Z ddlmZ dd� ZY nX dd lmZ dd lmZ ddlmZ ddlmZmZ dd lmZmZmZmZ ddlmZmZmZ ddlm Z ddl!m"Z" ddl#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl#m6Z6 ddl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZCmDZD G dd� de6jE�ZFG dd � d e$jG�ZHG d!d"� d"eH�ZIG d#d$� d$e'jJ�ZKG d%d&� d&eK�ZLG d'd(� d(eM�ZNd)d*� ZOdxd+d,�ZPd-ZQd.d/� ZReR� ee"d0d1d2d�eQ�dyd3d4��ZSee"d0d1d2d�eQ�dzd5d6��ZTdd7lUmVZV dd8lBmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZa zdd9lbmcZc W n ek �r� dZcY nX dd:ldmeZemfZfmgZg d;d<� ZhG d=d>� d>eM�Ziee<�G d?d@� d@eM��Zjee"d0dAdd�eeie"d0dAdd�ejdB��kdC�dD eijleijm� ee.�G dEdF� dFeM��Znee<�G dGdH� dHeM��Zoee;�G dIdJ� dJeM��ZpG dKdL� dLe'jq�ZrG dMdN� dNeM�ZsG dOdP� dPeM�ZtG dQdR� dReM�Zuee:�G dSdT� dTeM��Zvee9�G dUdV� dVeu��Zwee9�G dWdX� dXeu��ZxG dYdZ� dZeM�ZyG d[d\� d\eM�Zzee9�G d]d^� d^eM��Z{G d_d`� d`e5e=��Z|G dadb� dbe5e-��Z}ee9�G dcdd� ddeM��Z~e?� jZ�e�dedfdgdhdig�Z�ee9�G djdk� dkeM��Z�G dldm� dme��Z�G dndo� doe'j��Z�dpdq� Z�dVdmddd^d6d4d`d$dPd&d"d ddXdqdkdrdsdtdudvdwd(gZ�dS ){z HTTP client. � )�division�absolute_importN)� urlunparse�urljoin� urldefrag)r r )r c C s t tdd� | D ���}|�d�S )Nc S s g | ]}|� d ��qS )�charmap)�decode)�.0�p� r �4/usr/lib/python3/dist-packages/twisted/web/client.py� <listcomp> s zurlunparse.<locals>.<listcomp>r )�_urlunparse�tuple�encode)�parts�resultr r r r s r )�implementer)�Iterable)�wraps)�_PY3� networkString)�nativeString� intToBytes�unicode� itervalues)� deprecated�deprecatedModuleAttribute�getDeprecationWarningString)�Failure)�Version)�http)�defer�protocol�task�reactor)� isIPv6Address)� IProtocol�IOpenSSLContextFactory)�HostnameEndpoint� wrapClientTLS)�InsensitiveDict)�proxyForInterface)�error)�UNKNOWN_LENGTH�IAgent�IAgentEndpointFactory� IBodyProducer�IPolicyForHTTPS� IResponse)�Headers)�Logger)�_ensureValidURI�_ensureValidMethodc @ s e Zd ZdZdS )�PartialDownloadErrorz� Page was only partially downloaded, we got disconnected in middle. @ivar response: All of the response body which was downloaded. N)�__name__� __module__�__qualname__�__doc__r r r r r8 ? s r8 c @ s� e Zd ZdZdZdZdZdZed�Z dd� Z dd� Zd d � Zdd� Z d d� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zd S )!�HTTPPageGettera� Gets a resource via HTTP, then quits. Typically used with L{HTTPClientFactory}. Note that this class does not, by itself, do anything with the response. If you want to download a resource into a file, use L{HTTPPageDownloader} instead. @ivar _completelyDone: A boolean indicating whether any further requests are necessary after this one completes in order to provide a result to C{self.factory.deferred}. If it is C{False}, then a redirect is going to be followed. Otherwise, this protocol's connection is the last one before firing the result Deferred. This is used to make sure the result Deferred is only fired after the connection is cleaned up. r T)� hosts user-agent� cookies content-lengthc C s� t t| jdd��}| �|t| jj�� | jjdkrX| jjdkrX| jjd t | jj� }n:| jjdkr�| jjdkr�| jjd t | jj� }n| jj}| � d| jj�d |�� | � d | jj � t| jdd �}|d k r�| � dt t|��� g }| jj�� D ]:\}}|�� | jk�r| � ||� |�� d kr�|�|� q�| jj�� D ]\}}|�|d | � �q<|�rr| � dd�|�� | �� i | _|d k �r�| j�|� d S )N�method� GET� http�P � :� https� s Hostr>