o
    wvXj]  ã                   @   sh   d Z ddlmZ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	ZG d
d„ deƒZdS )zAmazon SQS Connection.é    )Úabsolute_importÚunicode_literals)Ú	transform)ÚAsyncAWSQueryConnectioné   )Úboto3)ÚAsyncMessage)Ú
AsyncQueue)ÚAsyncSQSConnectionc                   @   sè   e Zd ZdZd0dd„Z	d1dd„Zd2d	d
„Zdd„ Zd3dd„Zd4dd„Z				d5dd„Z
d4dd„Zd4dd„Z	d4dd„Z	d1dd„Zd4dd„Z	d4dd „Zd4d!d"„Zd6d$d%„Zd4d&d'„ZeZd(d)„ Zd4d*d+„Z	d4d,d-„Zd4d.d/„ZdS )7r
   zAsync SQS Connection.r   Nc                 K   s.   t d u rtdƒ‚tj| |f||dœ|¤Ž d S )Nzboto3 is not installed)Úregion_nameÚdebug)r   ÚImportErrorr   Ú__init__)ÚselfÚsqs_connectionr   ÚregionÚkwargs© r   úb/var/www/html/myproject/venv/lib/python3.10/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ÚdÚDefaultVisibilityTimeoutÚ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 )NÚDeleteQueuer   ©Ú
get_statusÚid)r   ÚqueueÚ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   ó   | j dd|i|j|d�S )NÚGetQueueAttributesÚAttributeNamer   )r   r$   )r   r%   Ú	attributer   r   r   r   Úget_queue_attributes0   s   þz'AsyncSQSConnection.get_queue_attributesc                 C   ó   | j d||dœ|j|d�S )NÚSetQueueAttribute)zAttribute.NamezAttribute.Valuer   r"   )r   r%   r/   Úvaluer   r   r   r   Úset_queue_attribute6   s
   ýz&AsyncSQSConnection.set_queue_attributer   c                 C   sx   d|i}|r
||d< |r&i }	t |ƒD ]\}
}||	dt|
d ƒ < q| |	¡ |d ur.||d< | jd|dtfg|||d�S )	NÚMaxNumberOfMessagesÚVisibilityTimeoutzAttributeName.r   ÚWaitTimeSecondsÚReceiveMessageÚMessage)r   Úparent)Ú	enumerateÚstrÚupdateÚget_listr   )r   r%   Ú	queue_urlÚnumber_messagesr   Ú
attributesÚwait_time_secondsr   r   ÚattrsÚidxÚattrr   r   r   Úreceive_message=   s   
þz"AsyncSQSConnection.receive_messagec                 C   s   |   |||¡S ©N)Údelete_message_from_handle©r   r%   Úreceipt_handler   r   r   r   Údelete_messageP   s   ÿz!AsyncSQSConnection.delete_messagec                 C   s\   i }t |ƒD ]\}}d |d ¡}| d |¡|jd |¡|ji¡ q| jd||jd|d�S )Nz"DeleteMessageBatchRequestEntry.{0}r   ú{0}.Idú{0}.ReceiptHandleÚDeleteMessageBatchÚPOST©Úverbr   ©r;   r   r=   r$   rJ   r   )r   r%   Úmessagesr   r   ÚiÚmÚprefixr   r   r   Údelete_message_batchU   s   þþz'AsyncSQSConnection.delete_message_batchc                 C   s   | j dd|i||d�S )NÚDeleteMessageÚReceiptHandler   )r#   rI   r   r   r   rH   b   s   þz-AsyncSQSConnection.delete_message_from_handlec                 C   s.   d|i}|rt |ƒ|d< | jd||jd|d�S )NÚMessageBodyÚDelaySecondsÚSendMessagerO   rP   )Úintr   r$   )r   r%   Úmessage_contentÚdelay_secondsr   r   r   r   r   Úsend_messagei   s   þzAsyncSQSConnection.send_messagec              
   C   sn   i }t |ƒD ]%\}}d |d ¡}| d |¡|d d |¡|d d |¡|d i¡ q| jd||jd	|d
�S )Nz SendMessageBatchRequestEntry.{0}r   rL   r   z{0}.MessageBodyz{0}.DelaySecondsé   ÚSendMessageBatchrO   rP   )r;   r   r=   r   r$   )r   r%   rS   r   r   rT   ÚmsgrV   r   r   r   Úsend_message_batchs   s   ýþz%AsyncSQSConnection.send_message_batchc                 C   r1   )NÚChangeMessageVisibility)rY   r6   r   r"   )r   r%   rJ   r   r   r   r   r   Úchange_message_visibility�   s   ÿüz,AsyncSQSConnection.change_message_visibilityc              
   C   sr   i }t |ƒD ]'\}}d |d ¡}| d |¡|d jd |¡|d jd |¡|d i¡ q| jd||jd|d	�S )
Nz,ChangeMessageVisibilityBatchRequestEntry.{0}r   rL   r   rM   z{0}.VisibilityTimeoutÚChangeMessageVisibilityBatchrO   rP   rR   )r   r%   rS   r   r   rT   Ú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 )NÚQueueNamePrefixÚ
ListQueuesr(   r   )r>   r	   )r   rV   r   r   r   r   r   Úget_all_queues˜   s   þz!AsyncSQSConnection.get_all_queuesc                 C   s   |   |t| j||ƒ¡S rG   )rn   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 rG   )ÚurlÚendswith)Ú.0Úq©Únamer   r   Ú	<genexpr>«   s   € z5AsyncSQSConnection._on_queue_ready.<locals>.<genexpr>)Únext)r   rv   Úqueuesr   ru   r   ro   ©   s   ÿz"AsyncSQSConnection._on_queue_readyc                 C   s   | j dd|jidtfg|d�S )NÚListDeadLetterSourceQueuesr(   r   )r>   rq   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 )NÚAddPermission)ÚLabelÚAWSAccountIdÚ
ActionNamer   r"   )r   r%   ÚlabelÚaws_account_idÚaction_namer   r   r   r   Úadd_permissionµ   s   þûz!AsyncSQSConnection.add_permissionc                 C   r,   )NÚRemovePermissionr}   r   r"   )r   r%   r€   r   r   r   r   Úremove_permission¿   s   ÿz$AsyncSQSConnection.remove_permission)r   N)NN)FN)r+   NrG   )r   NNNN)rk   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r'   r)   r0   r4   rF   rK   rW   rH   r`   rd   rf   rj   rn   rp   Úlookupro   r{   rƒ   r…   r   r   r   r   r
      s>    

ÿ




ý


ÿ
ÿ


ÿ
	

	

ÿ
r
   N)r‰   Ú
__future__r   r   Úviner   Ú!kombu.asynchronous.aws.connectionr   Úextr   Úmessager   r%   r	   Ú__all__r
   r   r   r   r   Ú<module>   s   