a
    xd6!                     @   s   d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
 ddlmZmZmZ dd Zd	ZG d
d dZG dd dZG dd dZG dd deZdS )zAmazon AWS Connection.    )message_from_bytes)MIMEMessage)promise	transform)
AWSRequestget_response)HeadersRequest
get_clientc                 C   s    d dd | D }t| S )Nz
c                 s   s   | ]}d j | V  qdS )z{}: {}N)format).0h r   Y/var/www/html/Ranjet/env/lib/python3.9/site-packages/kombu/asynchronous/aws/connection.py	<genexpr>       z'message_from_headers.<locals>.<genexpr>)joinr   encode)hdrbsr   r   r   message_from_headers   s    r   )AsyncHTTPSConnectionAsyncConnectionc                   @   s^   e Zd ZdZdd Zdd ZdddZd	d
 Zedd Z	edd Z
edd Zdd ZdS )AsyncHTTPResponsezAsync HTTP Response.c                 C   s   || _ d | _d| _d S )N
   )response_msgversion)selfr   r   r   r   __init__   s    zAsyncHTTPResponse.__init__c                 O   s   | j jS N)r   body)r   argskwargsr   r   r   read   s    zAsyncHTTPResponse.readNc                 C   s   | j j||S r    )r   headersget)r   namedefaultr   r   r   	getheader!   s    zAsyncHTTPResponse.getheaderc                 C   s   t | jj S r    )listr   r%   itemsr   r   r   r   
getheaders$   s    zAsyncHTTPResponse.getheadersc                 C   s"   | j d u rtt|  | _ | j S r    )r   r   r   r-   r,   r   r   r   msg'   s    
zAsyncHTTPResponse.msgc                 C   s   | j jS r    )r   coder,   r   r   r   status-   s    zAsyncHTTPResponse.statusc                 C   s   | j jr| j jjS dS )N )r   errormessager,   r   r   r   reason1   s    
zAsyncHTTPResponse.reasonc                 C   s
   t | jS r    )reprr   r,   r   r   r   __repr__7   s    zAsyncHTTPResponse.__repr__)N)__name__
__module____qualname____doc__r   r$   r)   r-   propertyr.   r0   r4   r6   r   r   r   r   r      s   



r   c                   @   s   e Zd ZdZeZeZdZdZdZ	dddZ
d!d	d
Zd"ddZdd Zd#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 )$r   zAsync HTTP Connection.GET/NP   i  )httphttps      4@c                 C   s"   g | _ || _|| _|pt | _d S r    )r%   timeoutstrictr
   http_client)r   rC   rB   rD   r   r   r   r   F   s    zAsyncHTTPSConnection.__init__c                 C   s`   || _ || _|d ur@z
|j}W n ty6   || _Y n
0 | | _|d ur\| jt|  d S r    )	pathmethodr$   AttributeErrorr!   r%   extendr*   r+   )r   rF   rE   r!   r%   r$   r   r   r   requestL   s    
zAsyncHTTPSConnection.requestc              	   C   s,   t | j}| j| j| j|| j| j| jddS )NF)rF   r%   r!   connect_timeoutrequest_timeoutZvalidate_cert)r   r%   r	   rE   rF   r!   rB   )r   r%   r   r   r   
getrequestY   s
    
zAsyncHTTPSConnection.getrequestc                 C   s&   |   }|t| j| | j|S r    )rL   Zthenr   ResponserD   Zadd_request)r   callbackrI   r   r   r   getresponse_   s    z AsyncHTTPSConnection.getresponsec                 C   s   d S r    r   )r   levelr   r   r   set_debugleveld   s    z#AsyncHTTPSConnection.set_debuglevelc                 C   s   d S r    r   r,   r   r   r   connectg   s    zAsyncHTTPSConnection.connectc                 C   s   d S r    r   r,   r   r   r   closej   s    zAsyncHTTPSConnection.closec                 C   s   || _ || _d S r    )rF   rE   )r   rF   rE   r   r   r   
putrequestm   s    zAsyncHTTPSConnection.putrequestc                 C   s   | j ||f d S r    )r%   append)r   headervaluer   r   r   	putheaderq   s    zAsyncHTTPSConnection.putheaderc                 C   s   d S r    r   r,   r   r   r   
endheaderst   s    zAsyncHTTPSConnection.endheadersc                 C   s    | j r|  j |7  _ n|| _ d S r    )r!   )r   datar   r   r   sendw   s    zAsyncHTTPSConnection.sendc                 C   s   d|   dS )Nz<AsyncHTTPConnection: >)rL   r,   r   r   r   r6   }   s    zAsyncHTTPSConnection.__repr__)NrA   N)NN)N)r7   r8   r9   r:   r	   r   rM   rF   rE   r!   Zdefault_portsr   rI   rL   rO   rQ   rR   rS   rT   rX   rY   r[   r6   r   r   r   r   r   ;   s&   



r   c                   @   s,   e Zd ZdZd	ddZdd Zd
ddZdS )r   zAsync AWS Connection.Nc                 K   s   || _ |pt | _d S r    )sqs_connectionr
   _httpclient)r   r]   rD   r#   r   r   r   r      s    zAsyncConnection.__init__c                 C   s   t | jdS )N)rD   )r   r^   r,   r   r   r   get_http_connection   s    z#AsyncConnection.get_http_connectionc                 C   s^   |pt  }|  }t|r6|||j|j|j|j| n$||j|j|j|j |j	|d |S NrN   )
r   r_   callablerF   rE   r!   r%   rI   urlrO   )r   rI   ZsenderrN   connr   r   r   _mexe   s    
zAsyncConnection._mexe)N)NN)r7   r8   r9   r:   r   r_   re   r   r   r   r   r      s   
r   c                       s   e Zd ZdZdZdZdZdZdZdZ	dZ
eee	fZeee
fZd fd
d	Zd ddZd!ddZd"ddZd#ddZdd Zdd Zdd Zdd Z  ZS )$AsyncAWSQueryConnectionzAsync AWS Query Connection.   i  iW  i  i  i  i  Nc                    s"   |si }t  j||fi | d S r    )superr   )r   r]   rD   Zhttp_client_paramsr#   	__class__r   r   r      s
    z AsyncAWSQueryConnection.__init__c                 C   sz   |  }|r||d< | jj}d}d|i}	| dkr@d}d|i}	tf ||d|	}
|j||
|d |
 }| j||d	S )
NActionstandardrZ   r&   Z
presignurlparams)rF   rc   )signing_typera   )copyr]   Z_request_signerlowerr   signpreparere   )r   	operationZparams_rE   verbrN   rm   Zsignerrn   Zparam_payloadrI   prepared_requestr   r   r   make_request   s    z$AsyncAWSQueryConnection.make_requestr=   POSTc                 C   s&   | j ||||t| j||p| ||dS r`   )rv   r   _on_list_ready)r   rs   rm   markersrE   parentrt   rN   r   r   r   get_list   s    z AsyncAWSQueryConnection.get_listr<   c              
   C   s$   | j ||||t| j||p| |dS r`   )rv   r   _on_obj_readyr   rs   rm   rE   rz   rt   rN   r   r   r   
get_object   s    z"AsyncAWSQueryConnection.get_objectc              
   C   s$   | j ||||t| j||p| |dS r`   )rv   r   _on_status_readyr}   r   r   r   
get_status   s    z"AsyncAWSQueryConnection.get_statusc                 C   s`   | j jj}|j| jkr0t|||j\}}|S |j| jv sH|j| j	v rLg S | 
|| d S r    )r]   metaservice_modelr0   STATUS_CODE_OKr   operation_modelr   STATUS_CODES_TIMEOUTSTATUS_CODES_SERVER_ERRORS_for_statusr$   )r   rz   ry   rs   r   r   _parsedr   r   r   rx      s    


z&AsyncAWSQueryConnection._on_list_readyc                 C   sD   | j jj}|j| jkr0t|||j\}}|S | ||	 d S r    )
r]   r   r   r0   r   r   r   r   r   r$   )r   rz   rs   r   r   r   r   r   r   r   r|      s    
z%AsyncAWSQueryConnection._on_obj_readyc                 C   sF   | j jj}|j| jkr2t|||j\}}|jS | 	||
 d S r    )r]   r   r   r0   r   r   r   r   r/   r   r$   )r   rz   rs   r   r   Zhttpresr   r   r   r   r      s    
z(AsyncAWSQueryConnection._on_status_readyc                 C   s$   |sdnd}t d||j|j|S )Nz
Empty bodyz
HTTP ErrorzRequest {}  HTTP {}  {} ({}))	Exceptionr   r0   r4   )r   r   r!   contextr   r   r   r   
  s    z#AsyncAWSQueryConnection._for_status)NN)N)r=   Nrw   N)r=   Nr<   N)r=   Nr<   N)r7   r8   r9   r:   r   ZSTATUS_CODE_REQUEST_TIMEOUTZ)STATUS_CODE_NETWORK_CONNECT_TIMEOUT_ERRORZSTATUS_CODE_INTERNAL_ERRORZSTATUS_CODE_BAD_GATEWAYZ%STATUS_CODE_SERVICE_UNAVAILABLE_ERRORZSTATUS_CODE_GATEWAY_TIMEOUTr   r   r   rv   r{   r~   r   rx   r|   r   r   __classcell__r   r   ri   r   rf      s6     

	



rf   N)r:   emailr   Zemail.mime.messager   Zviner   r   Zkombu.asynchronous.aws.extr   r   Zkombu.asynchronous.httpr   r	   r
   r   __all__r   r   r   rf   r   r   r   r   <module>   s   %F