o
    ³©i+  ã                   @   sÌ   d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZmZ ddlZd	 ee ¡ e ¡ e ¡ e ¡ ¡Ze e¡ZG d
d„ deƒZG dd„ deƒZdZG dd„ deƒZdd„ ZdS )u  
oss2.http
~~~~~~~~

è¿™ä¸ªæ¨¡å—åŒ…å«äº†HTTP Adaptersã€‚å°½ç®¡OSS Python SDKå†…éƒ¨ä½¿ç”¨requestsåº“è¿›è¡ŒHTTPé€šä¿¡ï¼Œä½†æ˜¯å¯¹ä½¿ç”¨è€…æ˜¯é€æ˜Žçš„ã€‚
è¯¥æ¨¡å—ä¸­çš„ `Session` ã€ `Request` ã€`Response` å¯¹requestsçš„å¯¹åº”çš„ç±»åšäº†ç®€å•çš„å°è£…ã€‚
é    N)ÚCaseInsensitiveDicté   )Ú__version__Údefaults)Úto_bytes)ÚRequestError)Úfile_object_remaining_bytesÚSizedFileAdapterz&aliyun-sdk-python/{0}({1}/{2}/{3};{4})c                   @   s"   e Zd ZdZddd„Zdd„ ZdS )ÚSessionu\   å±žäºŽåŒä¸€ä¸ªSessionçš„è¯·æ±‚å…±äº«ä¸€ç»„è¿žæŽ¥æ± ï¼Œå¦‚æœ‰å¯èƒ½ä¹Ÿä¼šé‡ç”¨HTTPè¿žæŽ¥ã€‚Nc                 C   st   t  ¡ | _|p	tj}|d u r*| j dt jj||d¡ | j dt jj||d¡ d S | j d|¡ | j d|¡ d S )Nzhttp://)Úpool_connectionsÚpool_maxsizezhttps://)Úrequestsr
   Úsessionr   Úconnection_pool_sizeÚmountÚadaptersÚHTTPAdapter)ÚselfÚ	pool_sizeÚadapterÚpsize© r   ú=/home/ubuntu/.local/lib/python3.10/site-packages/oss2/http.pyÚ__init__    s   

zSession.__init__c                 C   sv   z)t  d |j|j|j|j||j¡¡ t| j	j
|j|j|j|j|jd||jdƒW S  tjy: } zt|ƒ‚d }~ww )NzZSend request, method: {0}, url: {1}, params: {2}, headers: {3}, timeout: {4}, proxies: {5}T)ÚdataÚparamsÚheadersÚstreamÚtimeoutÚproxies)ÚloggerÚdebugÚformatÚmethodÚurlr   r   r   ÚResponser   Úrequestr   r   ÚRequestExceptionr   )r   Úreqr   Úer   r   r   Ú
do_request+   s    ÿ
ú€ÿzSession.do_request)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r*   r   r   r   r   r
      s    
r
   c                   @   s&   e Zd Z								ddd„ZdS )ÚRequestNÚ c                 C   s®   || _ || _t|ƒ| _|pi | _|| _|| _|	| _|
| _t	|t
ƒs't
|ƒ| _n|| _d| jvr4d | jd< d| jvrJ|rEtd | | jd< nt| jd< t d ||||¡¡ d S )NzAccept-Encodingz
User-Agentú/z>Init request, method: {0}, url: {1}, params: {2}, headers: {3})r#   r$   Ú_convert_request_bodyr   r   r   ÚregionÚproductÚcloudbox_idÚ
isinstancer   r   Ú
USER_AGENTr    r!   r"   )r   r#   r$   r   r   r   Úapp_namer   r3   r4   r5   r   r   r   r   ;   s(   	







ÿzRequest.__init__)NNNr0   NNNN)r+   r,   r-   r   r   r   r   r   r/   :   s    ør/   i    c                   @   s&   e Zd Zdd„ Zddd„Zdd„ ZdS )	r%   c                 C   sJ   || _ |j| _|j| _|j dd¡| _d| _t d 	| j| j| j¡¡ d S )Nzx-oss-request-idr0   Fz;Get response headers, req-id:{0}, status: {1}, headers: {2})
ÚresponseÚstatus_codeÚstatusr   ÚgetÚ
request_idÚ_Response__all_readr    r!   r"   )r   r9   r   r   r   r   d   s   
ÿzResponse.__init__Nc                 C   st   | j rdS |d u r#g }| j t¡D ]}| |¡ qd |¡}d| _ |S z	t| j |¡ƒW S  ty9   d| _ Y dS w )Nó    T)r>   r9   Úiter_contentÚ_CHUNK_SIZEÚappendÚjoinÚnextÚStopIteration)r   ÚamtÚcontent_listÚchunkÚcontentr   r   r   Úreadx   s   
þzResponse.readc                 C   s   | j  t¡S ©N)r9   r@   rA   )r   r   r   r   Ú__iter__‹   s   zResponse.__iter__rK   )r+   r,   r-   r   rJ   rL   r   r   r   r   r%   c   s    
r%   c                 C   s<   t | ƒ} t| dƒr| S t| dƒrt| dƒrt| t| ƒƒS | S )NÚ__len__ÚseekÚtell)r   Úhasattrr	   r   )r   r   r   r   r2   ”   s   
r2   )r.   Úplatformr   Úrequests.structuresr   r0   r   r   Úcompatr   Ú
exceptionsr   Úutilsr   r	   Úloggingr"   ÚsystemÚreleaseÚmachineÚpython_versionr7   Ú	getLoggerr+   r    Úobjectr
   r/   rA   r%   r2   r   r   r   r   Ú<module>   s$   ÿ
&1