U
    Th                     @   sB   d dl Z d dlZd dlT ddlmZ e eZG dd deZdS )    N)*   )
Connectionc                       s   e Zd Z fddZd3ddZdd Zd4ddZdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd  Zd5d!d"Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Z  ZS )6KaitenClientc                    s@   | dr|nd| }d|kr(d|d< t j|f|| d S )Nhttpzhttps://api_versionZv1)
startswithsuper__init__)selfurlargskwargs	__class__ (./modules/kaiten/kaiten_client/client.pyr
      s    zKaitenClient.__init__N   c              
   C   s   |p| j }| jd|d | jj|d|| jd`}td| d|j d|j  |	  t
|d"}|j|d	D ]}|| qpW 5 Q R X W 5 Q R X d S )
NZGET)methodr   T)streamtimeoutZverifyz
HTTP: GET z ->  zwb+)
chunk_size)r   Zlogger_curl_debugZ_sessiongetZ
verify_sslloggerdebugstatus_codereasonZraise_for_statusopenZiter_contentwrite)r   Zdownload_urlZ	save_pathr   r   responsefchunkr   r   r   download_file   s    
 zKaitenClient.download_filec                 C   s   |  d}| |S )Nzcompany/usersresource_urlr   r   r   r   r   r   get_company_users$   s    
zKaitenClient.get_company_usersr   d   c                 c   sx   ddi}|d k	rt ||d< |d k	r0t ||d< | d}| j||d}|sNqt|D ]
}|V  qR|d  |d 7  < q:d S )Ninclude_inactiveToffsetlimitusersparamsintr%   r   )r   r*   r+   r.   r   r,   userr   r   r   	get_users(   s     
zKaitenClient.get_usersc                 C   s   |  d}| |S )Nzusers/currentr$   r&   r   r   r   get_current_user:   s    
zKaitenClient.get_current_userc                 C   s2   |dd}|  d}| j||d}|r.|d S d S )NT)Zidsr)   r,   r-   r   r$   )r   user_idr.   r   resultr   r   r   get_user>   s    
zKaitenClient.get_userc                 C   s$   |  d}| d| d}| |S )Nspaces/z/usersr$   r   space_idbase_urlr   r   r   r   get_space_usersH   s    
zKaitenClient.get_space_usersc              
   C   sn   z*|  d}| d| d| }| |W S  tjk
rh } z|jjdkrTW Y d S |W 5 d }~X Y nX d S )Nr7   r8   z/users/i  )r%   r   requestsZ	HTTPErrorr    r   )r   r:   r4   r;   r   excr   r   r   get_space_userM   s    

zKaitenClient.get_space_userc                 C   s   |  d}| |S )Nz
card-typesr$   r&   r   r   r   get_card_typesW   s    
zKaitenClient.get_card_typesc                 C   s   |  d}| |S )Nr7   r$   r&   r   r   r   
get_spaces[   s    
zKaitenClient.get_spacesc                 C   s"   |  d}| d| }| |S )Nr7   r8   r$   r9   r   r   r   	get_space_   s    
zKaitenClient.get_spacec                 C   s$   |  d}| d| d}| |S )Nr7   r8   z/boardsr$   r9   r   r   r   
get_boardsd   s    
zKaitenClient.get_boardsc                 C   s$   |  d}| d| d}| |S )Nboardsr8   z/columnsr$   r   board_idr;   r   r   r   r   get_board_columnsi   s    
zKaitenClient.get_board_columnsc                 C   s"   |  d}| d| }| |S )NrD   r8   r$   rE   r   r   r   	get_boardn   s    
zKaitenClient.get_boardc                 C   sr   ddd}|d k	rt ||d< |d k	r2t ||d< |d k	rFt ||d< |d k	rZt ||d< | d}| j||d	S )
NZcreateddescription)order_byZadditional_card_fieldsr:   rF   r*   r+   cardsr-   r/   )r   r:   rF   r*   r+   r.   r   r   r   r   	get_cardss   s    
zKaitenClient.get_cardsc                 C   s"   |  d}| d| }| |S )NrK   r8   r$   r   card_idr;   r   r   r   r   get_card   s    
zKaitenClient.get_cardc                 C   s(   |  d}| d| d| }| |S )NrK   r8   z/checklists/r$   )r   rN   Zchecklist_idr;   r   r   r   r   get_card_checklist   s    
zKaitenClient.get_card_checklistc                 C   s$   |  d}| d| d}| |S )NrK   r8   z	/commentsr$   rM   r   r   r   get_card_comments   s    
zKaitenClient.get_card_commentsc                 C   s$   |  d}| d| d}| |S )NrK   r8   z
/time-logsr$   rM   r   r   r   get_card_time_logs   s    
zKaitenClient.get_card_time_logsc                 C   s$   |  d}| d| d}| |S )NrK   r8   z/tagsr$   rM   r   r   r   get_card_tags   s    
zKaitenClient.get_card_tagsc                 c   sR   ddd}|  d}| j||d}|s(qN|D ]
}|V  q,|d  |d 7  < qd S )Nr   r(   )r*   r+   tagsr-   r*   r+   r$   )r   r.   r   rT   tagr   r   r   get_tags   s    
zKaitenClient.get_tagsc                 c   sX   dddddd}|  d}| j||d}|s.qT|D ]
}|V  q2|d	  |d
 7  < qd S )Nr   r(   TnameZasc)r*   r+   Zinclude_valuesrJ   Zorder_directionzcompany/custom-propertiesr-   r*   r+   r$   )r   r.   r   Zcustom_propertiesZcustom_propertyr   r   r   get_custom_properties   s    
z"KaitenClient.get_custom_propertiesc                 C   sF   i }|   D ]4}d|kr.dd |d D |d< ||d|d  < q|S )NZselectValuesc                 S   s   i | ]}t |d  |qS )id)str).0vr   r   r   
<dictcomp>   s     
 z+KaitenClient.get_fields.<locals>.<dictcomp>Zcf_rY   )rX   )r   ZfieldsZfieldr   r   r   
get_fields   s    zKaitenClient.get_fields)Nr   )r   r(   )NNr   r(   )__name__
__module____qualname__r
   r#   r'   r2   r3   r6   r<   r?   r@   rA   rB   rC   rG   rH   rL   rO   rP   rQ   rR   rS   rV   rX   r^   __classcell__r   r   r   r   r      s.   




r   )	Zloggingr=   Zcmf.includeZ
connectionr   Z	getLoggerr_   r   r   r   r   r   r   <module>   s
   
