U
    dª/e/&  ã                   @   s¶   d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
 G dd„ dƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ dƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dƒZdS )zd
Request/response of PutBucketNotificationConfiguration and
GetBucketNotiicationConfiguration APIs.
é    )Úabsolute_import)ÚABCMetaé   )ÚElementÚ
SubElementÚfindÚfindallÚfindtextc                   @   sH   e Zd ZdZeZdd„ Zedd„ ƒZedd„ ƒZ	e
dd	„ ƒZd
d„ ZdS )Ú
FilterRulezFilter rule.c                 C   s   || _ || _d S ©N)Ú_nameÚ_value)ÚselfÚnameÚvalue© r   ú</tmp/pip-unpacked-wheel-xery97c7/minio/notificationconfig.pyÚ__init__"   s    zFilterRule.__init__c                 C   s   | j S )z	Get name.)r   ©r   r   r   r   r   &   s    zFilterRule.namec                 C   s   | j S )z
Get value.)r   r   r   r   r   r   +   s    zFilterRule.valuec                 C   s   t |dƒ}t |dƒ}| ||ƒS )ú/Create new object with values from XML element.ÚNameÚValue)r	   )ÚclsÚelementr   r   r   r   r   Úfromxml0   s    

zFilterRule.fromxmlc                 C   s*   t |dƒ}t |d| jƒ t |d| jƒ |S )úConvert to XML.r
   r   r   )r   r   r   ©r   r   r   r   r   Útoxml7   s    
zFilterRule.toxmlN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__metaclass__r   Úpropertyr   r   Úclassmethodr   r   r   r   r   r   r
      s   


r
   c                       s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚPrefixFilterRulezPrefix filter rule.c                    s   t ƒ  d|¡ d S )NÚprefix©Úsuperr   ©r   r   ©Ú	__class__r   r   r   B   s    zPrefixFilterRule.__init__©r   r   r    r!   r   Ú__classcell__r   r   r*   r   r%   ?   s   r%   c                       s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚSuffixFilterRulezSuffix filter rule.c                    s   t ƒ  d|¡ d S )NÚsuffixr'   r)   r*   r   r   r   I   s    zSuffixFilterRule.__init__r,   r   r   r*   r   r.   F   s   r.   c                   @   s`   e Zd ZdZeZdd„ Zedd„ ƒZedd„ ƒZ	edd	„ ƒZ
ed
d„ ƒZedd„ ƒZdd„ ZdS )ÚCommonConfigz4Common for cloud-function/queue/topic configuration.c                 C   s(   |st dƒ‚|| _|| _|| _|| _d S )Nzevents must be provided)Ú
ValueErrorÚ_eventsÚ
_config_idÚ_prefix_filter_ruleÚ_suffix_filter_rule)r   ÚeventsÚ	config_idÚprefix_filter_ruleÚsuffix_filter_ruler   r   r   r   R   s    zCommonConfig.__init__c                 C   s   | j S )zGet events.)r2   r   r   r   r   r6   [   s    zCommonConfig.eventsc                 C   s   | j S )zGet configuration ID.)r3   r   r   r   r   r7   `   s    zCommonConfig.config_idc                 C   s   | j S )zGet prefix filter rule.)r4   r   r   r   r   r8   e   s    zCommonConfig.prefix_filter_rulec                 C   s   | j S )zGet suffix filter rule.)r5   r   r   r   r   r9   j   s    zCommonConfig.suffix_filter_rulec                 C   s   t | dƒ}dd„ |D ƒ}t| dƒ}d}d}t| dƒ} | dk	r„t| dƒ} t | dƒ}|D ].}t |¡}|jd	krxt|jƒ}qTt|jƒ}qT||||fS )
z
Parse XML.ÚEventc                 S   s   g | ]
}|j ‘qS r   )Útext)Ú.0Útagr   r   r   Ú
<listcomp>s   s     z)CommonConfig.parsexml.<locals>.<listcomp>ÚIdNÚFilterÚS3Keyr
   r&   )	r   r	   r   r
   r   r   r%   r   r.   )r   Úelementsr6   r7   r8   r9   r=   Zfilter_ruler   r   r   Úparsexmlo   s    






zCommonConfig.parsexmlc                 C   sx   | j D ]}t|d|ƒ q| jdk	r0t|d| jƒ | js<| jrPt|dƒ}t|dƒ}| jrb| j |¡ | jrt| j |¡ |S )r   r:   Nr?   r@   rA   )r2   r   r3   r4   r5   r   )r   r   ÚeventZruler   r   r   r   ƒ   s    



zCommonConfig.toxmlN)r   r   r    r!   r   r"   r   r#   r6   r7   r8   r9   ÚstaticmethodrC   r   r   r   r   r   r0   M   s   	




r0   c                       sF   e Zd ZdZd‡ fdd„	Zedd„ ƒZedd„ ƒZ‡ fd	d
„Z	‡  Z
S )ÚCloudFuncConfigzCloud function configuration.Nc                    s(   |st dƒ‚|| _tƒ  ||||¡ d S )Nzcloud function must be provided)r1   Ú_cloud_funcr(   r   )r   Ú
cloud_funcr6   r7   r8   r9   r*   r   r   r   –   s       ÿzCloudFuncConfig.__init__c                 C   s   | j S )zGet cloud function ARN.)rG   r   r   r   r   rH   Ÿ   s    zCloudFuncConfig.cloud_funcc                 C   s.   t |ddƒ}|  |¡\}}}}| |||||ƒS )r   ÚCloudFunctionT©r	   rC   )r   r   rH   r6   r7   r8   r9   r   r   r   r   ¤   s    ÿûzCloudFuncConfig.fromxmlc                    s(   t |dƒ}t |d| jƒ tƒ  |¡ |S )r   ÚCloudFunctionConfigurationrI   )r   rG   r(   r   r   r*   r   r   r   ²   s    
zCloudFuncConfig.toxml)NNN)r   r   r    r!   r   r#   rH   r$   r   r   r-   r   r   r*   r   rF   “   s       ÿ	

rF   c                       sF   e Zd ZdZd‡ fdd„	Zedd„ ƒZedd„ ƒZ‡ fd	d
„Z	‡  Z
S )ÚQueueConfigzQueue configuration.Nc                    s(   |st dƒ‚|| _tƒ  ||||¡ d S )Nzqueue must be provided)r1   Ú_queuer(   r   )r   Úqueuer6   r7   r8   r9   r*   r   r   r   ½   s       ÿzQueueConfig.__init__c                 C   s   | j S )zGet queue ARN.)rM   r   r   r   r   rN   Æ   s    zQueueConfig.queuec                 C   s.   t |ddƒ}|  |¡\}}}}| |||||ƒS )r   ÚQueueTrJ   )r   r   rN   r6   r7   r8   r9   r   r   r   r   Ë   s    ÿûzQueueConfig.fromxmlc                    s(   t |dƒ}t |d| jƒ tƒ  |¡ |S )r   ÚQueueConfigurationrO   )r   rM   r(   r   r   r*   r   r   r   Ù   s    
zQueueConfig.toxml)NNN)r   r   r    r!   r   r#   rN   r$   r   r   r-   r   r   r*   r   rL   º   s       ÿ	

rL   c                       sF   e Zd ZdZd‡ fdd„	Zedd„ ƒZedd„ ƒZ‡ fd	d
„Z	‡  Z
S )ÚTopicConfigzGet topic configuration.Nc                    s(   |st dƒ‚|| _tƒ  ||||¡ d S )Nztopic must be provided)r1   Ú_topicr(   r   )r   Útopicr6   r7   r8   r9   r*   r   r   r   ä   s       ÿzTopicConfig.__init__c                 C   s   | j S )zGet topic ARN.)rR   r   r   r   r   rS   í   s    zTopicConfig.topicc                 C   s.   t |ddƒ}|  |¡\}}}}| |||||ƒS )r   ÚTopicTrJ   )r   r   rS   r6   r7   r8   r9   r   r   r   r   ò   s    ÿûzTopicConfig.fromxmlc                    s(   t |dƒ}t |d| jƒ tƒ  |¡ |S )r   ÚTopicConfigurationrT   )r   rR   r(   r   r   r*   r   r   r      s    
zTopicConfig.toxml)NNN)r   r   r    r!   r   r#   rS   r$   r   r   r-   r   r   r*   r   rQ   á   s       ÿ	

rQ   c                   @   sR   e Zd ZdZddd„Zedd„ ƒZedd„ ƒZed	d
„ ƒZe	dd„ ƒZ
dd„ ZdS )ÚNotificationConfigzNotification configuration.Nc                 C   s"   |pg | _ |pg | _|pg | _d S r   )Ú_cloud_func_config_listÚ_queue_config_listÚ_topic_config_list)r   Úcloud_func_config_listÚqueue_config_listÚtopic_config_listr   r   r   r     s    

zNotificationConfig.__init__c                 C   s   | j S )z&Get cloud function configuration list.)rW   r   r   r   r   rZ     s    z)NotificationConfig.cloud_func_config_listc                 C   s   | j S )zGet queue configuration list.)rX   r   r   r   r   r[     s    z$NotificationConfig.queue_config_listc                 C   s   | j S )zGet topic configuration list.)rY   r   r   r   r   r\     s    z$NotificationConfig.topic_config_listc                 C   s„   t |dƒ}g }|D ]}| t |¡¡ qt |dƒ}g }|D ]}| t |¡¡ q:t |dƒ}g }|D ]}| t |¡¡ qb| |||ƒS )r   rK   rP   rU   )r   ÚappendrF   r   rL   rQ   )r   r   rB   rZ   r=   r[   r\   r   r   r   r      s"    


  ÿzNotificationConfig.fromxmlc                 C   sN   t dƒ}| jD ]}| |¡ q| jD ]}| |¡ q$| jD ]}| |¡ q:|S )r   ZNotificationConfiguration)r   rW   r   rX   rY   )r   r   Úconfigr   r   r   r   3  s    


zNotificationConfig.toxml)NNN)r   r   r    r!   r   r#   rZ   r[   r\   r$   r   r   r   r   r   r   rV     s     ÿ




rV   N)r!   Ú
__future__r   Úabcr   Úxmlr   r   r   r   r	   r
   r%   r.   r0   rF   rL   rQ   rV   r   r   r   r   Ú<module>   s   "F'''