U
    cct                     @   sX   d 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ZG d	d
 d
eZdS )zAmazon SQS Connection.    )	transform)AsyncAWSQueryConnection   )boto3)AsyncMessage)
AsyncQueue)AsyncSQSConnectionc                       s   e Zd ZdZd1 fdd	Zd2ddZd3d	d
Zdd Zd4ddZd5ddZ	d6ddZ
d7ddZd8ddZd9ddZd:ddZd;ddZd<d d!Zd=d"d#Zd>d%d&Zd?d'd(ZeZd)d* Zd@d+d,ZdAd-d.ZdBd/d0Z  ZS )Cr   zAsync SQS Connection.r   Nc                    s.   t d krtdt j|f||d| d S )Nzboto3 is not installed)Zregion_namedebug)r   ImportErrorsuper__init__)selfsqs_connectionr	   regionkwargs	__class__ _/var/www/html/project/venv/lib/python3.8/site-packages/kombu/asynchronous/aws/sqs/connection.pyr      s     zAsyncSQSConnection.__init__c                 C   s*   d|i}|rt |d|d< | jd||dS )N	QueueNamedZDefaultVisibilityTimeoutZCreateQueuecallback)format
get_object)r   
queue_namevisibility_timeoutr   paramsr   r   r   create_queue   s     zAsyncSQSConnection.create_queueFc                 C   s   | j dd |j|dS )NZDeleteQueuer   
get_statusid)r   queueZforce_deletionr   r   r   r   delete_queue$   s    zAsyncSQSConnection.delete_queuec                 C   s   | j j|d}|d S )N)r   QueueUrl)r   get_queue_url)r   r"   resr   r   r   r%   (   s    z AsyncSQSConnection.get_queue_urlAllc                 C   s   | j dd|i|j|dS )NZGetQueueAttributesZAttributeNamer   )r   r!   )r   r"   	attributer   r   r   r   get_queue_attributes,   s      z'AsyncSQSConnection.get_queue_attributesc                 C   s   | j d||d|j|dS )NZSetQueueAttribute)zAttribute.NamezAttribute.Valuer   r   )r   r"   r(   valuer   r   r   r   set_queue_attribute2   s     z&AsyncSQSConnection.set_queue_attributer   ZApproximateReceiveCountc                 C   sx   d|i}|r||d< |rLi }	t |D ]\}
}||	dt|
d  < q$||	 |d k	r\||d< | jd|dtfg|||dS )	NZMaxNumberOfMessagesVisibilityTimeoutzAttributeName.r   ZWaitTimeSecondsZReceiveMessageMessage)r   parent)	enumeratestrupdateget_listr   )r   r"   Z	queue_urlZnumber_messagesr   
attributesZwait_time_secondsr   r   attrsidxattrr   r   r   receive_message9   s$    
    z"AsyncSQSConnection.receive_messagec                 C   s   |  |||S N)delete_message_from_handler   r"   receipt_handler   r   r   r   delete_messageM   s
      z!AsyncSQSConnection.delete_messagec                 C   s\   i }t |D ]8\}}d|d  }|| d|j| d|ji q| jd||jd|dS )NzDeleteMessageBatchRequestEntry.r   .Id.ReceiptHandleZDeleteMessageBatchPOSTverbr   r0   r2   r!   r<   r   )r   r"   messagesr   r   imprefixr   r   r   delete_message_batchR   s          z'AsyncSQSConnection.delete_message_batchc                 C   s   | j dd|i||dS )NZDeleteMessageReceiptHandler   )r    r;   r   r   r   r:   _   s      z-AsyncSQSConnection.delete_message_from_handlec                 C   s.   d|i}|rt ||d< | jd||jd|dS )NZMessageBodyZDelaySecondsZSendMessager@   rA   )intr   r!   )r   r"   Zmessage_contentZdelay_secondsr   r   r   r   r   send_messagef   s       zAsyncSQSConnection.send_messagec              
   C   sn   i }t |D ]J\}}d|d  }|| d|d | d|d | d|d i q| jd||jd	|d
S )NzSendMessageBatchRequestEntry.r   r>   r   z.MessageBodyz.DelaySeconds   ZSendMessageBatchr@   rA   )r0   r2   r   r!   )r   r"   rD   r   r   rE   msgrG   r   r   r   send_message_batchp   s$          z%AsyncSQSConnection.send_message_batchc                 C   s   | j d||d|j|dS )NZChangeMessageVisibility)rI   r-   r   r   )r   r"   r<   r   r   r   r   r   change_message_visibility~   s     z,AsyncSQSConnection.change_message_visibilityc              
   C   sr   i }t |D ]N\}}d|d  }|| d|d j| d|d j| d|d i q| jd||jd|d	S )
Nz)ChangeMessageVisibilityBatchRequestEntry.r   r>   r   r?   z.VisibilityTimeoutZChangeMessageVisibilityBatchr@   rA   rC   )r   r"   rD   r   r   rE   tprer   r   r   change_message_visibility_batch   s$          z2AsyncSQSConnection.change_message_visibility_batch c                 C   s(   i }|r||d< | j d|dtfg|dS )NZQueueNamePrefixZ
ListQueuesr$   r   )r3   r   )r   rG   r   r   r   r   r   get_all_queues   s      z!AsyncSQSConnection.get_all_queuesc                 C   s   |  |t| j||S r9   )rT   r   _on_queue_ready)r   r   r   r   r   r   	get_queue   s    zAsyncSQSConnection.get_queuec                    s   t  fdd|D d S )Nc                 3   s   | ]}|j  r|V  qd S r9   )urlendswith).0qnamer   r   	<genexpr>   s      z5AsyncSQSConnection._on_queue_ready.<locals>.<genexpr>)next)r   r\   queuesr   r[   r   rU      s     z"AsyncSQSConnection._on_queue_readyc                 C   s   | j dd|jidtfg|dS )NZListDeadLetterSourceQueuesr$   r   )r3   rW   r   )r   r"   r   r   r   r   get_dead_letter_source_queues   s     z0AsyncSQSConnection.get_dead_letter_source_queuesc                 C   s   | j d|||d|j|dS )NZAddPermission)LabelZAWSAccountIdZ
ActionNamer   r   )r   r"   labelZaws_account_idaction_namer   r   r   r   add_permission   s     z!AsyncSQSConnection.add_permissionc                 C   s   | j dd|i|j|dS )NZRemovePermissionra   r   r   )r   r"   rb   r   r   r   r   remove_permission   s       z$AsyncSQSConnection.remove_permission)r   N)NN)FN)r'   N)N)r   Nr,   NN)N)N)N)NN)N)N)N)rS   N)N)N)N)N)__name__
__module____qualname____doc__r   r   r#   r%   r)   r+   r8   r=   rH   r:   rK   rN   rO   rR   rT   rV   lookuprU   r`   rd   re   __classcell__r   r   r   r   r      sD   
   




       


 
   


 
	

	

 

r   N)ri   Zviner   Z!kombu.asynchronous.aws.connectionr   extr   messager   r"   r   __all__r   r   r   r   r   <module>   s   