
    X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  e j                  e      Z G d de      Zy)	    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y)
Connectionzapplication/json)zContent-TypeAcceptz*/*z
keep-alive)r   r
   Nc                     || _         || _        || _        || _        t	        |      | _        |t        j                         | _        n|| _        | j                  |       | j                          y 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__   sb      &$7|?$,,.DM#DM""5)!!#    c                     | S r    r   s    r   	__enter__zConnection.__enter__0   s    r   c                 $    | j                          y r   )close)r   _s     r   __exit__zConnection.__exit__3   s    

r   c                 6    | j                   j                         S r   )r   r$   r!   s    r   r$   zConnection.close6   s    }}""$$r   c                 R    | j                   j                  j                  ||i       y r   )r   headersupdate)r   keyvalues      r   _update_headerzConnection._update_header9   s    $$c5\2r   c                 H    | j                  ddj                  |             y )NAuthorizationzBearer {token})r   )r-   format)r   r   s     r   r   z Connection._create_token_session<   s!    O-=-D-D5-D-QRr   c                     t        t        j                  t        j                  t        j                  d      }t	        |      }| j
                  j                  d|       | j
                  j                  d|       y )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?   s^    3344#EE	
 #w7I|4J5r   c                 @   |xs | j                   }dj                  |dj                  |j                         D cg c]  \  }}dj                  ||       c}}      |sdndj                  t	        |            |      }t
        j                  ||       y c c}}w )Nz5curl --silent -X {method} -H {headers} {data} '{url}'z -H z
'{0}: {1}' z--data '{0}')methodr)   datar   )levelmsg)default_headersr0   joinitemsr   loggerlog)	r   r@   r   rA   r)   rB   r+   r,   messages	            r   logger_curl_debugzConnection.logger_curl_debugJ   s     1T11IPPKK")--/!C ##C/!   ^%:%:5;%G Q 
 	

G
,!s   Bc                 p    || j                   }|| j                  }dj                  d |||fD              S )N/c              3   D   K   | ]  }||j                  d        y w)NrL   )strip).0ss     r   	<genexpr>z*Connection.resource_url.<locals>.<genexpr>c   s     aSTS`as     )r   r   rE   )r   resourcer   r   s       r   resource_urlzConnection.resource_url^   s>    }}H**Kxxaxh.Oaaar   c                 .    t        | j                  |      S r   )r   r   )r   paths     r   
url_joinerzConnection.url_joinere   s    txx&&r   c           	      x   | j                  |      }d|v rdnd}|r|r|dz  }n|dz  }|r|t        |xs i       z  }|sd n
t        |      }|sd n
t        |      }	| j                  |||r|n|	|       |xs | j                  }| j
                  j                  |||||| j                  | j                        }
d|
_	        t        j                  dj                  |||
j                  |
j                               t        j                  d	j                  |
j                               |
j!                          |
S )
N?TF&)r@   r   rA   r)   )r@   r   r)   rA   jsonr   verifyzutf-8zHTTP: {} {} -> {} {}zHTTP: Response text -> {})rV   r   r   rJ   rD   r   requestr   r   encodingrG   debugr0   status_codereasontextraise_for_status)r   r@   rU   rA   rZ   paramsr)   r   params_already_in_url	json_dumpresponses              r   r\   zConnection.requesth   s<    ood#(+s
$s
s
9V\r**CtU4[ $D%+	9	 	 	
 1T11==((LL?? ) 
 $"))$$		
 	077FG!!#r   c                     | j                  d|||      }|j                  sy 	 |j                         S # t        $ r+}t        j                  |       |j                  cY d }~S d }~ww xY w)NGET)rU   rc   rA   )r\   ra   rZ   	ExceptionrG   error)r   rU   rc   rA   rf   es         r   getzConnection.get   se     <<	   
 }}	!==?" 	!LLO== 	!s   4 	A( A#A(#A()apilatestTNNK   )NN)rh   rL   NNNN)__name__
__module____qualname__rD   download_headersr   r"   r&   r$   r-   r   r   loggingDEBUGrJ   rS   rV   r\   rl   r    r   r   r
   r
      s    *$O
 " $0%3S	6 mm-(b'
 2n 	!r   r
   )rt   r   rZ   r   urllib.parser   r   requests.adaptersr   urllib3.util.retryr   cmf.include	getLoggerrp   rG   objectr
   r    r   r   <module>r|      s:       + ) $ 			8	$a! a!r   