
    Zj
                     D    d dl Z d dlmZ d dlZddlmZmZ  G d d      Zy)    N)parse   )GitflicConnectionErrorGitflicParsingErrorc                   <    e Zd Zd Zd Zd	dZd	dZd Zd Zd
dZ	y)	APIClientc                 f    | d| _         || _        t        j                         | _        d| _        y )Nz	/rest-apiT)base_urltokenrequestsSessionsession
ssl_verify)selfr
   r   s      &./modules/git/gitflic_client/client.py__init__zAPIClient.__init__	   s.    #*I.
'')    c                 j    |j                  d      s|j                  d      r|S | j                   | S )Nzhttp://zhttps://)
startswithr
   )r   paths     r   _get_urlzAPIClient._get_url   s1    ??9%)DK--''r   Nc                     |xs i } | j                   d||fi |}|y |j                  d   dv r	 |j                         }|S |S # t        $ r}t	               d }~ww xY w)NgetContent-Typezapplication/hal+jsonapplication/json)
do_requestheadersjson	Exceptionr   )r   r   querykwargsresultjson_resultes          r   r   zAPIClient.get   sv    !$//%u??>>>.)-YY,$kkm"" M  ,)++,s   A 	A
AAc                     |xs i }|xs i } | j                   d|||fi |}|y |j                  j                  d      dv r	 |j                         }|S |S # t        $ r}t               d }~ww xY w)Npostr   r   )r   r   r   r   r    r   )r   r   r!   datar"   r#   r$   r%   s           r   r'   zAPIClient.post&   s    zr!$//&$tFvF>>>n-1]],$kkm"" M  ,)++,s   A 	A0!
A++A0c                     t         NNotImplementedError)r   r   r!   r(   r"   s        r   putzAPIClient.put7       !!r   c                     t         r*   r+   )r   r   r!   r"   s       r   deletezAPIClient.delete:   r.   r   c                 H   |xs i }| j                  |      }t        j                  |      }t        j                  |j                        }|j                  |       t        j                  |j                  d            }	d| j                   dd}
|
| j                  d} | j                  j                  d||	t        j                  |      |d|}d|j                  cxk  rd	k  r|S  |j                  d
k(  ry t        d|j                   d|j                          )N )r!   ztoken r   )AuthorizationzContent-type)r   verify)methodurlr(   params   i,  i  zError status code z:  )r   r   urlparseparse_qsr!   update
urlunparse_replacer   r   r   requestr   dumpsstatus_coder   text)r   verbr   r!   r(   r"   raw_urlparsedr7   r6   r   optsr#   s                r   r   zAPIClient.do_request=   s"   --%(-evR89  &djj\2.
 oo

 &%% D)!	
  &$$*s*M + $$'9&:L:L9MRPVP[P[}%]^^r   r*   )NN)
__name__
__module____qualname__r   r   r   r'   r-   r0   r   r9   r   r   r   r      s&    ( """#_r   r   )r   urllibr   r   
exceptionsr   r   r   r9   r   r   <module>rL      s       CX_ X_r   