
    i0                         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T  e j        e          Z G d de          ZdS )	    N)dumps)	urlencodeurljoin)HTTPAdapter)Retry)*c                       e Zd ZdddZdddZ	 	 	 	 	 	 ddZd Zd Zd Zd Z	d Z
d Zd	d	ej        fdZddZd Z	 	 	 	 	 	 ddZ	 	 ddZd	S )
Connectionzapplication/json)zContent-TypeAcceptz*/*z
keep-alive)r   r
   apilatestTNK   c                     || _         || _        || _        || _        t	          |          | _        |t          j                    | _        n|| _        | 	                    |           | 
                                 d S N)urlapi_rootapi_version
verify_sslinttimeoutrequestsSession_session_create_token_session_set_session_retries)selfr   r   r   r   sessiontokenr   s           ,./modules/kaiten/kaiten_client/connection.py__init__zConnection.__init__   sx      &$7||?$,..DMM#DM""5)))!!#####    c                     | S r    r   s    r   	__enter__zConnection.__enter__0   s    r!   c                 .    |                                   d S r   )close)r   _s     r   __exit__zConnection.__exit__3   s    

r!   c                 4    | j                                         S r   )r   r'   r$   s    r   r'   zConnection.close6   s    }""$$$r!   c                 H    | j         j                            ||i           d S r   )r   headersupdate)r   keyvalues      r   _update_headerzConnection._update_header9   s%    $$c5\22222r!   c                 Z    |                      dd                    |                     d S )NAuthorizationzBearer {token})r   )r0   format)r   r   s     r   r   z Connection._create_token_session<   s0    O-=-D-D5-D-Q-QRRRRRr!   c                     t          t          j        t          j        t          j        d          }t	          |          }| j                            d|           | j                            d|           d S )N   )totalstatusstatus_forcelistbackoff_factor)max_retrieszhttp://zhttps://)r   configIMPORT_REQUEST_RETRY_TOTAL!IMPORT_REQUEST_RETRY_STATUS_CODESr   r   mount)r   retrieshttp_adapters      r   r   zConnection._set_session_retries?   ss    34#E	
 
 
 #w777I|444J55555r!   c           	      (   |p| j         }d                    |d                    d |                                D                       |sdn!d                    t	          |                    |          }t
                              ||           d S )Nz5curl --silent -X {method} -H {headers} {data} '{url}'z -H c                 @    g | ]\  }}d                      ||          S )z
'{0}: {1}')r3   ).0r.   r/   s      r   
<listcomp>z0Connection.logger_curl_debug.<locals>.<listcomp>U   s<     ! ! !C ##C//! ! !r!    z--data '{0}')methodr,   datar   )levelmsg)default_headersr3   joinitemsr   loggerlog)r   rF   r   rG   r,   rH   messages          r   logger_curl_debugzConnection.logger_curl_debugJ   s     1T1IPPKK ! !")--//! ! !    G^%:%:5;;%G%G Q 
 
 	

G
,,,,,r!   c                 j    || j         }|| j        }d                    d |||fD                       S )N/c              3   D   K   | ]}||                     d          V  d S )NrR   )strip)rC   ss     r   	<genexpr>z*Connection.resource_url.<locals>.<genexpr>c   s2      aaSTS`S`S`S`S`aar!   )r   r   rK   )r   resourcer   r   s       r   resource_urlzConnection.resource_url^   sE    }H*Kxxaaxh.Oaaaaaar!   c                 ,    t          | j        |          S r   )r   r   )r   paths     r   
url_joinerzConnection.url_joinere   s    tx&&&r!   GETrR   c           	         |                      |          }d|v rdnd}|r|r|dz  }n|dz  }|r|t          |pi           z  }|sd nt          |          }|sd nt          |          }	|                     |||r|n|	|           |p| j        }| j                            |||||| j        | j                  }
d|
_	        t                              d                    |||
j        |
j                             t                              d	                    |
j                             |
                                 |
S )
N?TF&)rF   r   rG   r,   )rF   r   r,   rG   jsonr   verifyzutf-8zHTTP: {} {} -> {} {}zHTTP: Response text -> {})r[   r   r   rP   rJ   r   requestr   r   encodingrM   debugr3   status_codereasontextraise_for_status)r   rF   rZ   rG   r`   paramsr,   r   params_already_in_url	json_dumpresponses              r   rb   zConnection.requesth   s    ood##(+s

 	$ s
s
 	+9V\r***C0ttU4[[ $5DD%++	,9	 	 	
 	
 	
 1T1=((L? ) 
 
 $"))$	 	
 	
 	
 	077FFGGG!!###r!   c                     |                      d|||          }|j        sd S 	 |                                S # t          $ r+}t                              |           |j        cY d }~S d }~ww xY w)Nr\   )rZ   ri   rG   )rb   rg   r`   	ExceptionrM   error)r   rZ   ri   rG   rl   es         r   getzConnection.get   s     <<	   
 
 } 	4	!==??" 	! 	! 	!LLOOO=      	!s   8 
A- A("A-(A-)r   r   TNNr   )NN)r\   rR   NNNN)__name__
__module____qualname__rJ   download_headersr    r%   r)   r'   r0   r   r   loggingDEBUGrP   rX   r[   rb   rq   r#   r!   r   r
   r
      sM       *$ O
 "  $ $ $ $0    % % %3 3 3S S S	6 	6 	6 m- - - -(b b b b' ' '
 2 2 2 2n 	! ! ! ! ! !r!   r
   )rv   r   r`   r   urllib.parser   r   requests.adaptersr   urllib3.util.retryr   cmf.include	getLoggerrr   rM   objectr
   r#   r!   r   <module>r~      s            + + + + + + + + ) ) ) ) ) ) $ $ $ $ $ $    		8	$	$a! a! a! a! a! a! a! a! a! a!r!   