
    ^f[!                        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 ddlmZmZmZ d Zd	Z G d
 d          Z G d d          Z G d d          Z G d de          ZdS )zAmazon AWS Connection.    )annotations)message_from_bytes)MIMEMessage)promise	transform)
AWSRequestget_response)HeadersRequest
get_clientc                    d                     d | D                       }t          |                                          S )Nz
c              3  *   K   | ]} d j         | V  dS )z{}: {}N)format).0hs     S/var/www/html/env/lib/python3.11/site-packages/kombu/asynchronous/aws/connection.py	<genexpr>z'message_from_headers.<locals>.<genexpr>   s+      66Q_X_a(666666    )joinr   encode)hdrbss     r   message_from_headersr      s8    	66#666	6	6Bbiikk***r   )AsyncHTTPSConnectionAsyncConnectionc                  t    e Zd ZdZd Zd ZddZd Zed             Z	ed             Z
ed	             Zd
 ZdS )AsyncHTTPResponsezAsync HTTP Response.c                0    || _         d | _        d| _        d S )N
   )response_msgversion)selfr    s     r   __init__zAsyncHTTPResponse.__init__   s     	r   c                    | j         j        S N)r    body)r#   argskwargss      r   readzAsyncHTTPResponse.read    s    }!!r   Nc                B    | j         j                            ||          S r&   )r    headersget)r#   namedefaults      r   	getheaderzAsyncHTTPResponse.getheader#   s    }$((w777r   c                X    t          | j        j                                                  S r&   )listr    r,   itemsr#   s    r   
getheaderszAsyncHTTPResponse.getheaders&   s!    DM)//11222r   c                    | j         3t          t          |                                                     | _         | j         S r&   )r!   r   r   r5   r4   s    r   msgzAsyncHTTPResponse.msg)   s4    9#$89J9J$K$KLLDIyr   c                    | j         j        S r&   )r    coder4   s    r   statuszAsyncHTTPResponse.status/   s    }!!r   c                @    | j         j        r| j         j        j        S dS )N )r    errormessager4   s    r   reasonzAsyncHTTPResponse.reason3   s"    = 	/=&..rr   c                *    t          | j                  S r&   )reprr    r4   s    r   __repr__zAsyncHTTPResponse.__repr__9   s    DM"""r   r&   )__name__
__module____qualname____doc__r$   r*   r0   r5   propertyr7   r:   r?   rB    r   r   r   r      s          
" " "8 8 8 83 3 3   X
 " " X"   X
# # # # #r   r   c                  ~    e Zd ZdZeZeZdZdZdZ	dddZ
dd	Zdd
Zd ZddZd Zd Zd Zd Zd Zd Zd Zd ZdS )r   zAsync HTTP Connection.GET/NP   i  )httphttps      4@c                Z    g | _         || _        || _        |pt                      | _        d S r&   )r,   timeoutstrictr   http_client)r#   rR   rQ   rS   s       r   r$   zAsyncHTTPSConnection.__init__H   s.    &6*,,r   c                    || _         || _        |/	 |j        } |            | _        n# t          $ r
 || _        Y nw xY w|;| j                            t          |                                                     d S d S r&   )	pathmethodr*   r'   AttributeErrorr,   extendr2   r3   )r#   rV   rU   r'   r,   r*   s         r   requestzAsyncHTTPSConnection.requestN   s    	#y !DFF		 " ! ! ! 			! LW]]__ 5 566666 s   ) ==c           	         t          | j                  }|                     | j        | j        || j        | j        | j        d          S )NF)rV   r,   r'   connect_timeoutrequest_timeoutvalidate_cert)r
   r,   r   rU   rV   r'   rQ   )r#   r,   s     r   
getrequestzAsyncHTTPSConnection.getrequest[   sI    $,''||DIdk7!%DL,0L  O O 	Or   c                    |                                  }|                    t          | j        |                     | j                            |          S r&   )r^   thenr   ResponserS   add_request)r#   callbackrY   s      r   getresponsez AsyncHTTPSConnection.getresponsea   sF    //##Yt}h77888++G444r   c                    d S r&   rH   )r#   levels     r   set_debuglevelz#AsyncHTTPSConnection.set_debuglevelf       r   c                    d S r&   rH   r4   s    r   connectzAsyncHTTPSConnection.connecti   rh   r   c                    d S r&   rH   r4   s    r   closezAsyncHTTPSConnection.closel   rh   r   c                "    || _         || _        d S r&   )rV   rU   )r#   rV   rU   s      r   
putrequestzAsyncHTTPSConnection.putrequesto   s    			r   c                >    | j                             ||f           d S r&   )r,   append)r#   headervalues      r   	putheaderzAsyncHTTPSConnection.putheaders   s"    VUO,,,,,r   c                    d S r&   rH   r4   s    r   
endheaderszAsyncHTTPSConnection.endheadersv   rh   r   c                F    | j         r| xj         |z  c_         d S || _         d S r&   )r'   )r#   datas     r   sendzAsyncHTTPSConnection.sendy   s+    9 	IIIIIIDIIIr   c                2    d|                                  dS )Nz<AsyncHTTPConnection: >)r^   r4   s    r   rB   zAsyncHTTPSConnection.__repr__   s    >(9(9>>>>r   )NrO   NNNr&   )rC   rD   rE   rF   r   r   ra   rV   rU   r'   default_portsr$   rY   r^   rd   rg   rj   rl   rn   rs   ru   rx   rB   rH   r   r   r   r   =   s         G HFDD#..M7 7 7 77 7 7 7O O O5 5 5 5
        - - -    ? ? ? ? ?r   r   c                  (    e Zd ZdZddZd ZddZdS )r   zAsync AWS Connection.Nc                >    || _         |pt                      | _        d S r&   )sqs_connectionr   _httpclient)r#   r   rS   r)   s       r   r$   zAsyncConnection.__init__   s!    ,&6*,,r   c                ,    t          | j                  S )N)rS   )r   r   r4   s    r   get_http_connectionz#AsyncConnection.get_http_connection   s    #0@AAAAr   c                :   |pt                      }|                                 }t          |          r% |||j        |j        |j        |j        |           nB|                    |j        |j        |j        |j                   |	                    |           |S Nrc   )
r   r   callablerV   rU   r'   r,   rY   urlrd   )r#   rY   senderrc   conns        r   _mexezAsyncConnection._mexe   s    (wyy''))F 	0F4w|?H. . . . LL w8 8 8h///r   r&   r{   )rC   rD   rE   rF   r$   r   r   rH   r   r   r   r      sT        7 7 7 7B B B     r   r   c                       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
	ZddZddZddZddZd Zd Zd Zd Z xZS )AsyncAWSQueryConnectionzAsync AWS Query Connection.   i  iW  i  i  i  i  Nc                F    |si } t                      j        ||fi | d S r&   )superr$   )r#   r   rS   http_client_paramsr)   	__class__s        r   r$   z AsyncAWSQueryConnection.__init__   sG    ! 	$!# 	/ 	/-	/ 	/ 	/ 	/ 	/r   c                <   |                                 }|r||d<   | j        j        }d}d|i}	|                                dk    rd}d|i}	t	          d
||d|	}
|                    ||
|           |
                                }|                     ||	          S )NActionstandardrw   r-   zpresign-urlparams)rV   r   )signing_typer   rH   )copyr   _request_signerlowerr   signpreparer   )r#   	operationparams_rU   verbrc   r   signerr   param_payloadrY   prepared_requests               r   make_requestz$AsyncAWSQueryConnection.make_request   s     	)(F8$4 "(::<<5  (L%v.MDDdDDmDDIw\BBB"??,,zz*Xz>>>r   rK   POSTc                f    |                      ||||t          | j        ||p| ||                    S r   )r   r   _on_list_ready)r#   r   r   markersrU   parentr   rc   s           r   get_listz AsyncAWSQueryConnection.get_list   sH      vtT#Xv~w  ! 
 
 	
r   rJ   c                d    |                      ||||t          | j        ||p| |                    S r   )r   r   _on_obj_readyr#   r   r   rU   r   r   rc   s          r   
get_objectz"AsyncAWSQueryConnection.get_object   sE      vtT"Hfni  ! 
 
 	
r   c                d    |                      ||||t          | j        ||p| |                    S r   )r   r   _on_status_readyr   s          r   
get_statusz"AsyncAWSQueryConnection.get_status   sE      vtT%x4  ! 
 
 	
r   c                *   | j         j        j        }|j        | j        k    r-t          |                    |          |j                  \  }}|S |j        | j        v s|j        | j	        v rg S | 
                    ||                                          r&   )r   metaservice_modelr:   STATUS_CODE_OKr	   operation_modelr    STATUS_CODES_TIMEOUTSTATUS_CODES_SERVER_ERRORS_for_statusr*   )r#   r   r   r   r    r   _parseds           r   r   z&AsyncAWSQueryConnection._on_list_ready   s    +0>?d111$--i88(:K IAv MOt888Ot>>>
 I""8X]]__===r   c                    | j         j        j        }|j        | j        k    r-t          |                    |          |j                  \  }}|S |                     ||	                                          r&   )
r   r   r   r:   r   r	   r   r    r   r*   )r#   r   r   r    r   r   r   s          r   r   z%AsyncAWSQueryConnection._on_obj_ready   sn    +0>?d111$--i88(:K IAv M""8X]]__===r   c                    | j         j        j        }|j        | j        k    r2t          |                    |          |j                  \  }}|j        S | 	                    ||
                                          r&   )r   r   r   r:   r   r	   r   r    r9   r   r*   )r#   r   r   r    r   httpresr   s          r   r   z(AsyncAWSQueryConnection._on_status_ready  sq    +0>?d111%--i88(:K JGQ <""8X]]__===r   c                l    |sdnd}t          d                    ||j        |j        |                    S )Nz
Empty bodyz
HTTP ErrorzRequest {}  HTTP {}  {} ({}))	Exceptionr   r:   r?   )r#   r    r'   contexts       r   r   z#AsyncAWSQueryConnection._for_status  sB    &*<,,7>>X_hot
 
   	r   r{   r&   )rK   Nr   N)rK   NrJ   N)rC   rD   rE   rF   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   s   @r   r   r      s&       %%N"%03-!$!,/)"% 	#-" 	$1# 48$(/ / / / / /? ? ? ?(
 
 
 

 
 
 

 
 
 
> > >$> > >> > >      r   r   N)rF   
__future__r   emailr   email.mime.messager   viner   r   kombu.asynchronous.aws.extr   r	   kombu.asynchronous.httpr
   r   r   r   __all__r   r   r   r   rH   r   r   <module>r      se     " " " " " " $ $ $ $ $ $ * * * * * * # # # # # # # # ? ? ? ? ? ? ? ? @ @ @ @ @ @ @ @ @ @+ + +

"# "# "# "# "# "# "# "#JC? C? C? C? C? C? C? C?L       0u u u u uo u u u u ur   