File: //lib/python3.6/site-packages/S3/__pycache__/Custom_httplib3x.cpython-36.pyc
3
�9pe�, � @ s
d dl mZmZ d dlZd dlZd dljZd dlmZm Z m
Z
mZmZm
Z
mZmZmZmZ d dlmZ ddlmZ ddd gZddd�Zd
d� Zdd� Zddd�Zd dd�Zdd� Zd!dd�ZG dd� de�Zd"dd�Zeej _!eej"_#eej"_$eej"_%eej"_&eej"_'dS )#� )�absolute_import�print_functionN)
�_CS_REQ_SENT�_CS_REQ_STARTED�CONTINUE�UnknownProtocol�CannotSendHeader�
NO_CONTENT�NOT_MODIFIED�EXPECTATION_FAILED�HTTPMessage�
HTTPException)�StringIO� )�encode_to_s3ZPATCHZPOSTZPUT�datac C sn y
| j d�S tk
rh } zBt|j|j|j|jd|j� | |j|j� |f �}d|_|�W Y dd}~X nX dS )z<Call data.encode("latin-1") but show a better error message.zlatin-1z`%s (%.20r) is not valid Latin-1. Use %s.encode('utf-8') if you want to send it encoded in UTF-8.N)�encode�UnicodeEncodeError�encoding�object�start�end�title� __cause__)r �name�err�exc� r �&/usr/lib/python3.6/Custom_httplib3x.py�_encode s
r c C s� | j dk rdS | j� \}}}| | _| _|j� | _|dkrBd| _n|jd�rTd| _nt|��t j
| j� | _ | _| j
dkr�x| j D ]}td|d d
� q�W | j jd�}|r�|j� dkr�d
| _d| _nd| _| j� | _d| _| j jd�}|o�| j �r2yt|�| _W n tk
�r d| _Y nX | jdk �r8d| _nd| _|tk�st|tk�std| k�o`dk n �st| jdk�rzd| _| j �r�| j �r�| jdk�r�d
| _dS )z� Re-implemented httplib begin function
to not loop over "100 CONTINUE" status replies
but to report it to higher level so it can be processed.
N�HTTP/1.0�HTTP/0.9�
zHTTP/1.� r zheader:� )r ztransfer-encoding�chunkedTFzcontent-length�d �� ZHEAD)r r! )�headersZ_read_status�code�status�strip�reason�version�
startswithr �httplibZ
parse_headers�fp�msg�
debuglevel�print�get�lowerr% Z
chunk_leftZ_check_closeZ
will_close�length�int�
ValueErrorr r
�_method)�selfr- r* r, �hdrZtr_encr6 r r r �httpresponse_patched_begin* sL
r<