U
    \i                     @   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d5ddZdd Zd6d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d7dd Zd!d" Zd8d#d$Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Z  ZS )9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 }|d7 }| jd|| jd | jj|| jd|| jd`}td| d|j d|j	  |
  t|d	"}|j|d
D ]}|| qW 5 Q R X W 5 Q R X d S )Nz?dl=trueZGET)methodr   headersT)r   streamtimeoutZverifyz
HTTP: GET z ->  zwb+)
chunk_size)r   Zlogger_curl_debugZdownload_headersZ_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   sv   |  d}| j|ddid}|r*|d V  ddddd}| j||d}|sLqr|D ]
}|V  qP|d	  |d
 7  < q8d S )Nzcompany/usersZ
owner_onlyTparamsr   d   Z	all_users)offsetlimitZfor_members_sectionZtemporarily_inactive_statusr(   r)   resource_urlr   )r   r   ownerr&   usersuserr   r   r   get_company_users&   s    

zKaitenClient.get_company_usersr   r'   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_inactiveTr(   r)   r-   r%   )intr+   r   )r   r(   r)   r&   r   r-   r.   r   r   r   	get_users>   s     
zKaitenClient.get_usersc                 C   s   |  d}| |S )Nzusers/currentr*   r   r   r   r   r   get_current_userP   s    
zKaitenClient.get_current_userc                 C   s2   |dd}|  d}| j||d}|r.|d S d S )NT)Zidsr0   r-   r%   r   r*   )r   user_idr&   r   resultr   r   r   get_userT   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_users^   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 )Nr8   r9   z/users/i  )r+   r   requestsZ	HTTPErrorr!   r   )r   r;   r5   r<   r   excr   r   r   get_space_userc   s    

zKaitenClient.get_space_userc                 C   s   |  d}| |S )Nz
card-typesr*   r3   r   r   r   get_card_typesm   s    
zKaitenClient.get_card_typesc                 C   s   |  d}| |S )Nr8   r*   r3   r   r   r   
get_spacesq   s    
zKaitenClient.get_spacesc                 C   s"   |  d}| d| }| |S )Nr8   r9   r*   r:   r   r   r   	get_spaceu   s    
zKaitenClient.get_spacec                 C   s$   |  d}| d| d}| |S )Nr8   r9   z/boardsr*   r:   r   r   r   get_space_boardsz   s    
zKaitenClient.get_space_boardsc                 C   s$   |  d}| d| d}| |S )Nboardsr9   z/columnsr*   r   board_idr<   r   r   r   r   get_board_columns   s    
zKaitenClient.get_board_columnsc                 c   s6   | j ||||d}|sq2|D ]
}|V  q||7 }q d S )N)rG   archivedr(   r)   )	get_cards)r   rG   rI   r(   r)   cardsZcardr   r   r   get_board_cards   s    zKaitenClient.get_board_cardsc                 C   s"   |  d}| d| }| |S )NrE   r9   r*   rF   r   r   r   	get_board   s    
zKaitenClient.get_boardc           	      C   s   ddi}|d k	rt ||d< |d k	r0t ||d< |d k	rHt| |d< |d k	rX||d< |d k	rlt ||d< |d k	rt ||d< | d	}| j||d
S )Norder_byZcreatedr;   rG   rI   additional_card_fieldsr(   r)   rK   r%   )r1   strlowerr+   r   )	r   r;   rG   rI   rO   r(   r)   r&   r   r   r   r   rJ      s"    
 
zKaitenClient.get_cardsc                 C   s"   |  d}| d| }| |S )NrK   r9   r*   r   card_idr<   r   r   r   r   get_card   s    
zKaitenClient.get_cardc                 C   s(   |  d}| d| d| }| |S )NrK   r9   z/checklists/r*   )r   rS   Zchecklist_idr<   r   r   r   r   get_card_checklist   s    
zKaitenClient.get_card_checklistc                 C   s$   |  d}| d| d}| |S )NrK   r9   z	/commentsr*   rR   r   r   r   get_card_comments   s    
zKaitenClient.get_card_commentsc                 C   s$   |  d}| d| d}| |S )NrK   r9   z
/time-logsr*   rR   r   r   r   get_card_time_logs   s    
zKaitenClient.get_card_time_logsc                 C   s$   |  d}| d| d}| |S )NrK   r9   z/tagsr*   rR   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   rY   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'   truenameZasc)r(   r)   Zinclude_valuesrN   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   sN   i }|   D ]<}|d dkr6dd |dg D |d< ||d|d  < q|S )NtypeZselectc                 S   s   i | ]}t |d  |qS )id)rP   ).0vr   r   r   
<dictcomp>   s     
 z+KaitenClient.get_fields.<locals>.<dictcomp>ZselectValuesZcf_r`   )r^   r   )r   ZfieldsZfieldr   r   r   
get_fields   s    zKaitenClient.get_fields)Nr   )r   r'   )Nr   r'   )NNNNr   r'   )__name__
__module____qualname__r
   r$   r/   r2   r4   r7   r=   r@   rA   rB   rC   rD   rH   rL   rM   rJ   rT   rU   rV   rW   rX   r[   r^   rd   __classcell__r   r   r   r   r      s<   




      
r   )	Zloggingr>   Zcmf.includeZ
connectionr   Z	getLoggerre   r   r   r   r   r   r   <module>   s
   
