
    "hj+                     v   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	j!                  e ej"                          ej$                          ej&                          ej(                               Z ej,                  e      Z G d
 de      Z G d de      ZdZ G d de      Zd Zy)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                       e Zd ZdZddZd Zy)Sessionu\   属于同一个Session的请求共享一组连接池，如有可能也会重用HTTP连接。Nc                    t        j                         | _        |xs t        j                  }|w| j                  j                  dt         j                  j                  ||             | j                  j                  dt         j                  j                  ||             y | j                  j                  d|       | j                  j                  d|       y )Nzhttp://)pool_connectionspool_maxsizezhttps://)requestsr   sessionr   connection_pool_sizemountadaptersHTTPAdapter)self	pool_sizeadapterpsizes       G/root/.hermes/SkillClaw/.venv/lib/python3.12/site-packages/oss2/http.py__init__zSession.__init__    s    ''):X::?LLy(*;*;*G*GY^mr*G*stLLz8+<+<+H+HZ_ns+H+tuLLy'2LLz73    c                    	 t         j                  dj                  |j                  |j                  |j
                  |j                  ||j                               t        | j                  j                  |j                  |j                  |j                  |j
                  |j                  d||j                              S # t        j                  $ r}t        |      d }~ww xY 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"   es       r   
do_requestzSession.do_request+   s    	"LLu||

CGGSZZgs{{T UDLL00SWW69hh8;

9<8<9@9< 1 F G G (( 	"q/!	"s   CC C(C##C()NN)__name__
__module____qualname____doc__r   r.    r   r   r   r      s    f	4"r   r   c                   $    e Zd Z	 	 	 	 	 	 	 	 ddZy)RequestNc                    || _         || _        t        |      | _        |xs i | _        || _        || _        |	| _        |
| _        t        |t              st        |      | _        n|| _        d| j                  vrd | j                  d<   d| j                  vr/|rt        dz   |z   | j                  d<   nt        | j                  d<   t        j                  dj                  ||||             y )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#   r9   r:   r;   s              r   r   zRequest.__init__;   s     )$/	l&'#67.w7DL"DL DLL0.2DLL*+t||+-7#-=-H\*-7\*U\\]cehjp]df 	gr   )NNN NNNN)r/   r0   r1   r   r3   r   r   r5   r5   :   s     !"gr   r5   i    c                        e Zd Zd ZddZd Zy)r)   c                 .   || _         |j                  | _        |j                  | _        |j                  j	                  dd      | _        d| _        t        j                  dj                  | j
                  | j                  | j                               y )Nzx-oss-request-idr?   Fz;Get response headers, req-id:{0}, status: {1}, headers: {2})
responsestatus_codestatusr    get
request_id_Response__all_readr$   r%   r&   )r   rB   s     r   r   zResponse.__init__d   s~     **''"**../A2F  RYYZ^ZiZikokvkvZ^ZfZfh 	ir   Nc                 8   | j                   ry|Qg }| j                  j                  t              D ]  }|j	                  |        dj                  |      }d| _         |S 	 t        | j                  j                  |            S # t        $ r
 d| _         Y yw xY w)Nr   T)rG   rB   iter_content_CHUNK_SIZEappendjoinnextStopIteration)r   amtcontent_listchunkcontents        r   readzResponse.readx   s    ??;L33K@ +##E*+hh|,G"DONDMM66s;<<  "&s   "#B BBc                 @    | j                   j                  t              S N)rB   rI   rJ   )r   s    r   __iter__zResponse.__iter__   s    }}))+66r   rU   )r/   r0   r1   r   rS   rV   r3   r   r   r)   r)   c   s    i(&7r   r)   c                     t        |       } t        | d      r| S t        | d      r!t        | d      rt        | t        |             S | S )N__len__seektell)r   hasattrr
   r	   )r   s    r   r8   r8      sE    D>DtYtVv!6&A$&GHHKr   )r2   platformr   requests.structuresr   r?   r   r   compatr   
exceptionsr   utilsr	   r
   loggingr&   systemreleasemachinepython_versionr=   	getLoggerr/   r$   objectr   r5   rJ   r)   r8   r3   r   r   <module>rh      s      3 #  $ @ 5<<"$4H$4$4$68H8H8H8JLcHLcLcLeg
 
		8	$"f ":#gf #gL )7v )7b	r   