o
    	h"                     @  s   d Z ddlm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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.    )annotations)message_from_bytes)MIMEMessage)promise	transform)
AWSRequestget_cert_path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   c/var/www/html/optinet_system/venv/lib/python3.10/site-packages/kombu/asynchronous/aws/connection.py	<genexpr>   s    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     | 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#      zAsyncHTTPResponse.getheaderc                 C  s   t | jj S r"   )listr   r'   itemsr   r   r   r   
getheaders&   r,   zAsyncHTTPResponse.getheadersc                 C  s"   | j d u rtt|  | _ | j S r"   )r   r   r   r0   r/   r   r   r   msg)   s   
zAsyncHTTPResponse.msgc                 C  r!   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   reason3   s   
zAsyncHTTPResponse.reasonc                 C  s
   t | jS r"   )reprr   r/   r   r   r   __repr__9   s   
zAsyncHTTPResponse.__repr__r"   )__name__
__module____qualname____doc__r    r&   r+   r0   propertyr1   r3   r7   r9   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   rF   rE   rG   r   r   r   r    H   s   zAsyncHTTPSConnection.__init__c                 C  sd   || _ || _|d ur z|j}W n ty   || _Y nw | | _|d ur0| jt|  d S d S r"   )	pathmethodr&   AttributeErrorr#   r'   extendr-   r.   )r   rI   rH   r#   r'   r&   r   r   r   requestN   s   

zAsyncHTTPSConnection.requestc              
   C  s2   t | j}| j| j| j|| j| j| jdtddS )NT)rI   r'   r#   connect_timeoutrequest_timeoutvalidate_certca_certs)r
   r'   r   rH   rI   r#   rE   r   )r   r'   r   r   r   
getrequest[   s   
zAsyncHTTPSConnection.getrequestc                 C  s&   |   }|t| j| | j|S r"   )rQ   thenr   ResponserG   add_request)r   callbackrL   r   r   r   getresponseb   s   z AsyncHTTPSConnection.getresponsec                 C     d S r"   r   )r   levelr   r   r   set_debuglevelg      z#AsyncHTTPSConnection.set_debuglevelc                 C  rW   r"   r   r/   r   r   r   connectj   rZ   zAsyncHTTPSConnection.connectc                 C  rW   r"   r   r/   r   r   r   closem   rZ   zAsyncHTTPSConnection.closec                 C  s   || _ || _d S r"   )rI   rH   )r   rI   rH   r   r   r   
putrequestp   s   
zAsyncHTTPSConnection.putrequestc                 C  s   | j ||f d S r"   )r'   append)r   headervaluer   r   r   	putheadert   s   zAsyncHTTPSConnection.putheaderc                 C  rW   r"   r   r/   r   r   r   
endheadersw   rZ   zAsyncHTTPSConnection.endheadersc                 C  s"   | j r|  j |7  _ d S || _ d S r"   )r#   )r   datar   r   r   sendz   s   
zAsyncHTTPSConnection.sendc                 C  s   d|   dS )Nz<AsyncHTTPConnection: >)rQ   r/   r   r   r   r9      r,   zAsyncHTTPSConnection.__repr__)NrD   NNNr"   )r:   r;   r<   r=   r   r   rS   rI   rH   r#   default_portsr    rL   rQ   rV   rY   r[   r\   r]   ra   rb   rd   r9   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   rh   rG   r%   r   r   r   r       s   zAsyncConnection.__init__c                 C  s   t | jdS )N)rG   )r   ri   r/   r   r   r   get_http_connection   s   z#AsyncConnection.get_http_connectionc                 C  s`   |pt  }|  }t|r|||j|j|j|j| |S ||j|j|j|j |j	|d |S )NrU   )
r   rj   callablerI   rH   r#   r'   rL   urlrV   )r   rL   senderrU   connr   r   r   _mexe   s   
zAsyncConnection._mexer"   rf   )r:   r;   r<   r=   r    rj   rp   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   rh   rG   http_client_paramsr%   	__class__r   r   r       s
   
z AsyncAWSQueryConnection.__init__c                 C  s   |  }||p	i di  |r||d< | jj}d}	d|i}
| dkr+d}	d|i}
td||d|
}|j|||	d	 | }| j	||d
S )NqueryActionstandardrc   r(   zpresign-urlparams)rI   rm   )signing_typerk   r   )
copyupdater(   rh   _request_signerlowerr   signpreparerp   )r   	operationparams_rH   verbrU   protocol_paramsrz   signerr{   param_payloadrL   prepared_requestr   r   r   make_request   s   z$AsyncAWSQueryConnection.make_requestr@   POSTc	           	      C  s(   | j ||||t| j||p| |||dS N)rU   r   )r   r   _on_list_ready)	r   r   rz   markersrH   parentr   rU   r   r   r   r   get_list   s   z AsyncAWSQueryConnection.get_listr?   c              
   C  &   | j ||||t| j||p| ||dS r   )r   r   _on_obj_readyr   r   rz   rH   r   r   rU   r   r   r   r   
get_object      z"AsyncAWSQueryConnection.get_objectc              
   C  r   r   )r   r   _on_status_readyr   r   r   r   
get_status   r   z"AsyncAWSQueryConnection.get_statusc                 C  s\   | j jj}|j| jkrt|||j\}}|S |j| jv s$|j| j	v r&g S | 
|| r"   )rh   metaservice_modelr3   STATUS_CODE_OKr	   operation_modelr   STATUS_CODES_TIMEOUTSTATUS_CODES_SERVER_ERRORS_for_statusr&   )r   r   r   r   r   r   _parsedr   r   r   r      s   
z&AsyncAWSQueryConnection._on_list_readyc                 C  s@   | j jj}|j| jkrt|||j\}}|S | ||	 r"   )
rh   r   r   r3   r   r	   r   r   r   r&   )r   r   r   r   r   r   r   r   r   r   r      s   
z%AsyncAWSQueryConnection._on_obj_readyc                 C  sB   | j jj}|j| jkrt|||j\}}|jS | 	||
 r"   )rh   r   r   r3   r   r	   r   r   r2   r   r&   )r   r   r   r   r   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   r3   r7   )r   r   r#   contextr   r   r   r     s   z#AsyncAWSQueryConnection._for_statusrf   )r@   Nr   NN)r@   Nr?   NN)r:   r;   r<   r=   r   STATUS_CODE_REQUEST_TIMEOUT)STATUS_CODE_NETWORK_CONNECT_TIMEOUT_ERRORSTATUS_CODE_INTERNAL_ERRORSTATUS_CODE_BAD_GATEWAY%STATUS_CODE_SERVICE_UNAVAILABLE_ERRORSTATUS_CODE_GATEWAY_TIMEOUTr   r   r    r   r   r   r   r   r   r   r   __classcell__r   r   ru   r   rq      s<    



		

rq   N)r=   
__future__r   emailr   email.mime.messager   viner   r   kombu.asynchronous.aws.extr   r   r	   kombu.asynchronous.httpr
   r   r   r   __all__r   r   r   rq   r   r   r   r   <module>   s    %G