o
    #j_                     @   s   d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddl
mZ ddl
mZ dd	l
mZ dd
l
mZ ddlmZ ddlmZ eeZG dd de	ZdS )z(
This module provides a client for IAM.
    N)	iteritems)bce_v1_signer)BceBaseClient)bce_http_client)handler)http_content_types)http_headers)http_methods)iam)requiredc                   @   s  e Zd ZdZdbddZ					dcd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eeefddd Zdd ZddddZdbddZdbd d!Zd"d# Zdbd$d%Zdbd&d'Zd(d) Zdbd*d+Zdbd,d-Zd.d/ Zeeefeefd0d1d2 Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"d=d> Z#d?d@ Z$dAdB Z%dCdD Z&dEdF Z'dGdH Z(dIdJ Z)dKdL Z*eeefeefdMdNdO Z+dPdQ Z,dRdS Z-dTdU Z.dVdW Z/dXdY Z0dZd[ Z1d\d] Z2d^d_ Z3d`da Z4dS )e	IamClientz
    sdk client
    Nc                 C   s   t | | d S N)r   __init__)selfconfig r   a/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/baidubce/services/iam/iam_client.pyr   )   s   zIamClient.__init__c              
   C   sB   |  |}tj| }|d u rtj}t|tjtj	|g|||||S r   )
_merge_configr
   Z
URL_PREFIXr   Z
parse_jsonr   send_requestr   signZparse_error)r   Zhttp_methodpathbodyheadersparamsr   Zbody_parserr   r   r   _send_iam_request,   s   


zIamClient._send_iam_requestc                 C   s(   |d u r| j S t| j }|| |S r   )r   copyZmerge_non_none_values)r   r   Z
new_configr   r   r   r   =   s
   
zIamClient._merge_configc                 C   "   d| }| j tjtjtji|dS W
        :type role_name: bytes

        :return:
            **HttpResponse**
           /role/r   r   r   r	   GETr   CONTENT_TYPEr   JSONr   	role_namer   r   r   r   get_roleG      
zIamClient.get_rolec                 C   J   |du rd}nt |tstdt|}d}| jtjtj	t
ji||dS )z`
        :type create_role_request: dict

        :return:
            **HttpResponse**
        Ns"   create_role_request should be dict   /roler   r   r   
isinstancedict	TypeErrorjsondumpsr   r	   POSTr   r#   r   r$   )r   Zcreate_role_requestr   r   r   r   r   create_roleV      


zIamClient.create_rolec                 C   N   |du rd}nt |tstdt|}d| }| jtjtj	t
ji||dS )z
        :type role_name: bytes
        :type update_role_request: dict

        :return:
            **HttpResponse**
        Ns"   update_role_request should be dictr   r+   r-   r.   r/   r0   r1   r   r	   PUTr   r#   r   r$   )r   r&   Zupdate_role_requestr   r   r   r   r   update_rolem   s   


zIamClient.update_rolec                 C   r   r   r   r	   DELETEr   r#   r   r$   r%   r   r   r   delete_role      
zIamClient.delete_rolec                 C      d}| j tjtjtji|dS )7
        :return:
            **HttpResponse**
        r*   r    r!   r   r   r   r   r   	list_role      
zIamClient.list_rolec                 C   r)   )zb
        :type create_policy_request: dict

        :return:
            **HttpResponse**
        Ns$   create_policy_request should be dict   /policyr+   r,   )r   Zcreate_policy_requestr   r   r   r   r   create_policy   r4   zIamClient.create_policyc                 C   s,   d| }d|i}| j tjtjtji||dS )zy
        :type policy_name: bytes
        :type policy_type: bytes
        :return:
            **HttpResponse**
           /policy/
   policyTyper   r   r   r!   )r   policy_namepolicy_typer   r   r   r   r   
get_policy   s   
zIamClient.get_policy)rG   c                 C   sf   |}t |tr|d}|du rd}nt |tstdt|}d| }| jtj	t
jtji||dS )zb
        :type update_policy_request: dict

        :return:
            **HttpResponse**
        utf-8Ns$   update_policy_request should be dictrD   r+   )r-   strencoder.   r/   r0   r1   r   r	   r2   r   r#   r   r$   )r   rG   Zupdate_policy_requestZpolicy_name_bytesr   r   r   r   r   update_policy   s   




zIamClient.update_policyc                 C   r   )zY
        :type policy_name: bytes

        :return:
            **HttpResponse**
        rD   r    r9   )r   rG   r   r   r   r   delete_policy   r<   zIamClient.delete_policyc                 C   s*   d}||d}| j tjtjtji||dS )z
        :type policy_type: bytes

        :type name_filter: bytes
        :param name_filter: bytes

        :return:
            **HttpResponse**
        rB   )rE   s
   nameFilterrF   r!   )r   rH   Zname_filterr   r   r   r   r   list_policy   s   


zIamClient.list_policyc                 C   4   d| d | }d|i}| j tjtjtji||dS z
        :type user_name: bytes
        :type policy_name: bytes

        :type policy_type: bytes
        :param policy_type: None

        :return:
            **HttpResponse**
           /user/rD   rE   rF   r   r	   r7   r   r#   r   r$   r   	user_namerG   rH   r   r   r   r   r   attach_policy_to_user     
zIamClient.attach_policy_to_userc                 C   rP   rQ   r9   rT   r   r   r   detach_policy_from_user  rW   z!IamClient.detach_policy_from_userc                 C   &   d| d }| j tjtjtji|dS )W
        :type user_name: bytes

        :return:
            **HttpResponse**
        rR   rB   r    r!   r   rU   r   r   r   r   list_policies_from_user,     
z!IamClient.list_policies_from_userc                 C   rP   )
        :type group_name: bytes
        :type policy_name: bytes

        :type policy_type: bytes
        :param policy_type: None

        :return:
            **HttpResponse**
           /group/rD   Z
policyTyperF   rS   r   
group_namerG   rH   r   r   r   r   r   attach_policy_to_group:  rW   z IamClient.attach_policy_to_groupc                 C   rP   )r^   r_   rD   rE   rF   r9   r`   r   r   r   detach_policy_from_groupN  rW   z"IamClient.detach_policy_from_groupc                 C   rY   )X
        :type group_name: bytes

        :return:
            **HttpResponse**
        r_   rB   r    r!   r   ra   r   r   r   r   list_policies_from_groupb  r]   z"IamClient.list_policies_from_groupc                 C   rP   z
        :type role_name: bytes
        :type policy_name: bytes

        :type policy_type: bytes
        :param policy_type: None

        :return:
            **HttpResponse**
        r   rD   rE   rF   rS   r   r&   rG   rH   r   r   r   r   r   attach_policy_to_rolep  rW   zIamClient.attach_policy_to_rolec                 C   rP   rg   r9   rh   r   r   r   detach_policy_from_role  rW   z!IamClient.detach_policy_from_rolec                 C   rY   )r   r   rB   r    r!   r%   r   r   r   list_policies_from_role  r]   z!IamClient.list_policies_from_role)	policy_id
grant_typec                 C   Z   |}t |tr|d}|}t |tr|d}d| d | }| jtjtjtj	i|dS )z
        :type policy_id: bytes        :type grant_type:

        : grant_type: UserPolicy, GroupPolicy

        :return:
            **HttpResponse**
        rJ   rD   s   /grant/r    )
r-   rK   rL   r   r	   r"   r   r#   r   r$   )r   rl   rm   Zpolicy_id_bytesZgrant_type_bytesr   r   r   r   $list_attached_entities_by_grant_type  s   




z.IamClient.list_attached_entities_by_grant_typec                 C   r)   )z`
        :type create_user_request: dict

        :return:
            **HttpResponse**
        Ns"   create_user_request should be dict   /userr+   r,   )r   Zcreate_user_requestr   r   r   r   r   create_user  r4   zIamClient.create_userc                 C   r   rZ   rR   r    r!   r[   r   r   r   get_user  r(   zIamClient.get_userc                 C   r5   )z~
        :type user_name: bytes
        :type update_user_request: dict
        :return:
            **HttpResponse**
        Ns"   update_user_request should be dictrR   r+   r6   )r   rU   Zupdate_user_requestr   r   r   r   r   update_user  s   


zIamClient.update_userc                 C   r   rr   r9   r[   r   r   r   delete_user  r<   zIamClient.delete_userc                 C   r=   )r>   rp   r    r!   r?   r   r   r   	list_user  rA   zIamClient.list_userc                 C   sR   |du rd}nt |tstdt|}d| d }| jtjtj	t
ji||dS )z
        :type user_name: bytes
        :type update_user_login_profile_request: dict

        :return:
            **HttpResponse**
        Ns0   update_user_login_profile_request should be dictrR      /loginProfiler+   r6   )r   rU   Z!update_user_login_profile_requestr   r   r   r   r   update_user_login_profile  s   


z#IamClient.update_user_login_profilec                 C   rY   rZ   rR   rw   r    r!   r[   r   r   r   get_user_login_profile0  s   
z IamClient.get_user_login_profilec                 C   rY   ry   r9   r[   r   r   r   delete_user_login_profile?  r]   z#IamClient.delete_user_login_profilec                 C   rY   rZ   rR   s
   /accesskeyr    )r   r	   r2   r   r#   r   r$   r[   r   r   r   create_user_accesskeyM  r]   zIamClient.create_user_accesskeyc                 C   4   d| d | }ddi}| j tjtjtji||dS )y
        :type user_name: bytes
        :type accesskey_id: bytes

        :return:
            **HttpResponse**
        rR      /accesskey/disable rF   rS   r   rU   accesskey_idr   r   r   r   r   disable_user_accesskey[     
z IamClient.disable_user_accesskeyc                 C   r~   )r   rR   r   enabler   rF   rS   r   r   r   r   enable_user_accesskeyl  r   zIamClient.enable_user_accesskeyc                 C   *   d| d | }| j tjtjtji|dS )r   rR   r   r    r9   )r   rU   r   r   r   r   r   delete_user_accesskey}     
zIamClient.delete_user_accesskeyc                 C   rY   r|   r!   r[   r   r   r   list_user_accesskey  r]   zIamClient.list_user_accesskey)rU   mfa_typec                 C   rn   )z
            :type user_name: bytes            :type mfa_type:
            :mfa_type: TOTP

            :return:
                none
            rJ   rR   s	   /mfaType/r    )
r-   rK   rL   r   r	   r:   r   r#   r   r$   )r   rU   r   Zuser_name_bytesZmfa_type_bytesr   r   r   r   unbind_user_mfa_device  s   	




z IamClient.unbind_user_mfa_devicec                 C   r)   )z`
        :type create_group_request:dict

        :return:
            **HttpResponse**
        Ns#   create_group_request should be dict   /groupr+   r,   )r   Zcreate_group_requestr   r   r   r   r   create_group  r4   zIamClient.create_groupc                 C   r   )zW
        :type group_name: bytes
        :return:
            **HttpResponse**
        r_   r    r!   re   r   r   r   	get_group  s   
zIamClient.get_groupc                 C   r5   )z
        :type group_name: bytes
        :type update_group_request: dict

        :return:
            **HttpResponse**
        Ns#   update_group_request should be dictr_   r+   r6   )r   ra   Zupdate_group_requestr   r   r   r   r   update_group  s   	


zIamClient.update_groupc                 C   r   )rd   r_   r    r9   re   r   r   r   delete_group  r<   zIamClient.delete_groupc                 C   r=   )r>   r   r    r!   r?   r   r   r   
list_group  rA   zIamClient.list_groupc                 C   r   )zv
        :type group_name: bytes
        :type user_name: bytes
        :return:
            **HttpResponse**
        r_   rR   r    rS   r   ra   rU   r   r   r   r   add_user_to_group  s   
zIamClient.add_user_to_groupc                 C   r   )zw
        :type group_name: bytes
        :type user_name: bytes

        :return:
            **HttpResponse**
        r_   rR   r    r9   r   r   r   r   remove_user_from_group  r   z IamClient.remove_user_from_groupc                 C   rY   )rZ   rR   r   r    r!   r[   r   r   r   list_user_group(  r]   zIamClient.list_user_groupc                 C   rY   )rd   r_   rp   r    r!   re   r   r   r   list_group_user6  r]   zIamClient.list_group_userr   )NNNNN)NN)5__name__
__module____qualname____doc__r   r   r   r'   r3   r8   r;   r@   rC   rI   r   bytesrK   rM   rN   rO   rV   rX   r\   rb   rc   rf   ri   rj   rk   ro   rq   rs   rt   ru   rv   rx   rz   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   $   sp    












r   )r   r   r0   loggingZfuture.utilsr   Zbaidubce.authr   Zbaidubce.bce_base_clientr   Zbaidubce.httpr   r   r   r   r	   Zbaidubce.servicesr
   Zbaidubce.utilsr   	getLoggerr   _loggerr   r   r   r   r   <module>   s    
