B
    è?F[Á,  ã               @   sÄ   d dl mZ d dlmZ dZdZdZdZdZdZ	d	Z
d
ZdZdZdZdZdZdZdZdZdZdZdZdddddddgZdddgZG d d!„ d!eƒZG d"d
„ d
eƒZG d#d	„ d	eƒZG d$d„ deƒZd%S )&é    )ÚUser)ÚInvalidAclErrorZAccessControlListZAllAuthenticatedUsersZAllUsersZDisplayNameZDomainZEmailAddressÚEntryÚEntriesZGroupByDomainZGroupByEmailZ	GroupByIdÚIDÚNameZOwnerZ
PermissionÚScopeÚtypeZUserByEmailZUserByIdZprivatezpublic-readzproject-privatezpublic-read-writezauthenticated-readzbucket-owner-readzbucket-owner-full-controlZREADZWRITEZFULL_CONTROLc               @   sb   e Zd Zddd„Ze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S )ÚACLNc             C   s   || _ t| ƒ| _d S )N)Úparentr   Úentries)Úselfr   © r   ú*lib/python3.7/site-packages/boto/gs/acl.pyÚ__init__9   s    zACL.__init__c             C   s   | S )Nr   )r   r   r   r   Úacl=   s    zACL.aclc             C   sX   t | dƒrd| j ¡  g}ndg}| j}|rJx|jD ]}| | ¡ ¡ q4W dd |¡ S )NÚownerzOwner:%sÚ z<%s>z, )Úhasattrr   Ú__repr__r   Ú
entry_listÚappendÚjoin)r   Úentries_reprÚacl_entriesÚer   r   r   r   A   s    
zACL.__repr__c             C   s    t t||d}| jj |¡ d S )N)r	   Úemail_addressÚ
permission)r   ÚUSER_BY_EMAILr   r   r   )r   r   r   Úentryr   r   r   Úadd_email_grantO   s    zACL.add_email_grantc             C   s    t |t|d}| jj |¡ d S )N)r   r	   Úid)r   Ú
USER_BY_IDr   r   r   )r   r   Zuser_idr   r   r   r   Úadd_user_grantV   s    zACL.add_user_grantc             C   s    t t||d}| jj |¡ d S )N)r	   r   r   )r   ÚGROUP_BY_EMAILr   r   r   )r   r   r   r   r   r   r   Úadd_group_email_grantZ   s    zACL.add_group_email_grantc             C   s    t t||d}| jj |¡ d S )N)r	   r!   r   )r   ÚGROUP_BY_IDr   r   r   )r   r   Zgroup_idr   r   r   r   Úadd_group_grant_   s    zACL.add_group_grantc             C   sH   |  ¡ t  ¡ kr t| ƒ| _| jS |  ¡ t  ¡ kr@t| ƒ| _| jS d S d S )N)ÚlowerÚOWNERr   r   ÚENTRIESr   r   )r   ÚnameÚattrsÚ
connectionr   r   r   ÚstartElementc   s    

zACL.startElementc             C   s4   |  ¡ t  ¡ krn|  ¡ t  ¡ kr$nt| ||ƒ d S )N)r(   r)   r*   Úsetattr)r   r+   Úvaluer-   r   r   r   Ú
endElementm   s
    zACL.endElementc             C   sF   dt  }t| dƒr || j ¡ 7 }| j}|r6|| ¡ 7 }|dt  7 }|S )Nz<%s>r   z</%s>)ÚACCESS_CONTROL_LISTr   r   Úto_xmlr   )r   Úsr   r   r   r   r3   u   s    
z
ACL.to_xml)N)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   r   r    r#   r%   r'   r.   r1   r3   r   r   r   r   r
   7   s   

r
   c               @   s6   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )r   Nc             C   s   || _ g | _d S )N)r   r   )r   r   r   r   r   r   ƒ   s    zEntries.__init__c             C   s0   g }x| j D ]}| | ¡ ¡ qW dd |¡ S )Nz<Entries: %s>z, )r   r   r   r   )r   r   r   r   r   r   r   ‰   s    zEntries.__repr__c             C   s0   |  ¡ t  ¡ kr(t| ƒ}| j |¡ |S d S d S )N)r(   ÚENTRYr   r   r   )r   r+   r,   r-   r   r   r   r   r.      s
    zEntries.startElementc             C   s"   |  ¡ t  ¡ krnt| ||ƒ d S )N)r(   r9   r/   )r   r+   r0   r-   r   r   r   r1   —   s    zEntries.endElementc             C   s>   | j s
dS dt }x| j D ]}|| ¡ 7 }qW |dt 7 }|S )Nr   z<%s>z</%s>)r   r*   r3   )r   r4   r   r   r   r   r3      s    zEntries.to_xml)N)r5   r6   r7   r   r   r.   r1   r3   r   r   r   r   r      s
   
c               @   s6   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )r   Nc             C   s&   |st | |||||ƒ}|| _|| _d S )N)r   Úscoper   )r   r:   r	   r!   r+   r   Údomainr   r   r   r   r   ª   s    zEntry.__init__c             C   s   d| j  ¡ | j ¡ f S )Nz<%s: %s>)r:   r   r   )r   r   r   r   r   ±   s    zEntry.__repr__c             C   sX   |  ¡ t  ¡ kr>t|kr(tdttf ƒ‚t| |t ƒ| _| jS |  ¡ t  ¡ krPnd S d S )Nz Missing "%s" in "%s" part of ACL)r(   ÚSCOPEÚTYPEr   r   r:   Ú
PERMISSION)r   r+   r,   r-   r   r   r   r.   ´   s    zEntry.startElementc             C   sV   |  ¡ t  ¡ krn@|  ¡ t  ¡ krF| ¡ }|tkr>td| ƒ‚|| _nt| ||ƒ d S )NzInvalid Permission "%s")r(   r<   r>   ÚstripÚSupportedPermissionsr   r   r/   )r   r+   r0   r-   r   r   r   r1   Ï   s    zEntry.endElementc             C   s:   dt  }|| j ¡ 7 }|dt| jtf 7 }|dt  7 }|S )Nz<%s>z<%s>%s</%s>z</%s>)r9   r:   r3   r>   r   )r   r4   r   r   r   r3   Ú   s
    zEntry.to_xml)NNNNNNN)r5   r6   r7   r   r   r.   r1   r3   r   r   r   r   r   ¨   s    
c               @   sÀ   e Zd Ze ¡ g e ¡ g e ¡ e ¡ ge ¡ e	 ¡ e
 ¡ e ¡ ge ¡ e	 ¡ e ¡ e ¡ ge ¡ e	 ¡ e
 ¡ e ¡ ge ¡ e	 ¡ e ¡ e ¡ giZddd„Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )r   Nc             C   sL   || _ || _|| _|| _|| _|| _| j ¡ | jkrHtdt	t
| jf ƒ‚d S )NzInvalid %s %s "%s" )r   r	   r+   r!   r;   r   r(   ÚALLOWED_SCOPE_TYPE_SUB_ELEMSr   r<   r=   )r   r   r	   r!   r+   r   r;   r   r   r   r   ñ   s    zScope.__init__c             C   sL   d }| j r| j }n| jr | j}n| jr,| j}|r>d| j|f S d| j S d S )Nz<%s: %s>z<%s>)r!   r   r;   r	   )r   Znamed_entityr   r   r   r   ý   s    zScope.__repr__c             C   s2   |  ¡ | j| j  ¡  kr.td|tt| jf ƒ‚d S )Nz'Element "%s" not allowed in %s %s "%s" )r(   rA   r	   r   r<   r=   )r   r+   r,   r-   r   r   r   r.   
  s
    zScope.startElementc             C   sx   |  ¡ }| ¡ t ¡ kr || _nT| ¡ t ¡ kr8|| _n<| ¡ t ¡ krP|| _n$| ¡ t ¡ krh|| _	nt
| ||ƒ d S )N)r?   r(   ÚDOMAINr;   ÚEMAIL_ADDRESSr   r   r!   ÚNAMEr+   r/   )r   r+   r0   r-   r   r   r   r1     s    zScope.endElementc             C   s$  dt | jf }| j ¡ t ¡ ks2| j ¡ t ¡ kr4nà| j ¡ t ¡ kr\|dt| jtf 7 }n¸| j ¡ t ¡ ks€| j ¡ t	 ¡ kr°|dt
| jt
f 7 }| jr®|dt| jtf 7 }nd| j ¡ t ¡ ksÖ| j ¡ t ¡ kr|dt| jtf 7 }| jr|dt| jtf 7 }ntd| jƒ‚|dt  7 }|S )Nz<%s type="%s">z<%s>%s</%s>zInvalid scope type "%s" z</%s>)r<   r	   r(   ÚALL_AUTHENTICATED_USERSÚ	ALL_USERSÚGROUP_BY_DOMAINrB   r;   r$   r   rC   r   r+   rD   r&   r"   r   r!   r   )r   r4   r   r   r   r3     s(    

zScope.to_xml)NNNNN)r5   r6   r7   rE   r(   rF   rG   rB   r$   ÚDISPLAY_NAMErC   rD   r&   r   r   r"   rA   r   r   r.   r1   r3   r   r   r   r   r   â   s    
N)Zboto.gs.userr   Zboto.exceptionr   r2   rE   rF   rH   rB   rC   r9   r*   rG   r$   r&   r   rD   r)   r>   r<   r=   r   r"   ZCannedACLStringsr@   Úobjectr
   r   r   r   r   r   r   r   Ú<module>   s8   
J':