File: //lib/python3.6/site-packages/S3/__pycache__/Custom_httplib27.cpython-36.opt-1.pyc
3
�9pe� � @ s d dl mZmZ d dlZd dlZd dlmZmZmZmZm Z m
Z
mZmZm
Z
mZ yd dlmZ W n ek
r� d dlmZ Y nX ddlmZ ddd gZd
d� Zdd
� Zdd� Zddd�ZdZddd�ZG dd� de�Zdd� 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_s3ZPATCHZPOSTZPUTc C s� | j dk rdS | j� \}}}|| _|j� | _|dkr<d| _n*|jd�rNd| _n|dkr^d| _nt|��| jdkr�d| _d| _ d | _
tt� �| _ dS t| j
d�| _ | jdkr�x| j jD ]}td
|dd� q�W d| j _
| j jd
�}|r�|j� dkr�d | _ d| _nd| _ | j� | _
| j jd�}|�rh| j �rhyt|�| _W n tk
�rR d| _Y nX | jdk �rnd| _nd| _|tk�s�|tk�s�d| k�o�dk n �s�| jdk�r�d| _| 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.
NzHTTP/1.0�
zHTTP/1.� zHTTP/0.9� r r zheader:� )�endztransfer-encoding�chunkedzcontent-length�d �� ZHEAD)�msgZ_read_status�status�strip�reason�version�
startswithr �lengthr Z
will_closer r �fp�
debuglevel�headers�printZ getheader�lowerZ
chunk_leftZ_check_close�int�
ValueErrorr r
�_method)�selfr r r �hdrZtr_encr � r* �&/usr/lib/python3.6/Custom_httplib27.py�httpresponse_patched_begin s\
r, c C s� d }|d kr|j � tkrd}nv|d k r�ytt|��}W n\ ttfk
r� yttj|j� �j �}W n* tt
fk
r� | jdkr�td� Y nX Y nX |d k r�| j
d|� d S )N�0r z
Cannot stat!!zContent-Length)�upper�_METHODS_EXPECTING_BODY�str�len� TypeError�AttributeError�os�fstat�fileno�st_size�OSErrorr! r# � putheader)r( �body�methodZthelenr* r* r+ �)httpconnection_patched_set_content_lengthg s
r<