
    i[!                        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y)zAmazon AWS Connection.    )annotations)message_from_bytes)MIMEMessage)promise	transform)
AWSRequestget_response)HeadersRequest
get_clientc                d    dj                  d | D              }t        |j                               S )Nz
c              3  :   K   | ]  } d j                   |   yw)z{}: {}N)format).0hs     /var/www/html/hwPaymentPortal-be-dev/hw-payment-portal-api/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/connection.py	<genexpr>z'message_from_headers.<locals>.<genexpr>   s     6Q_X__a(6s   )joinr   encode)hdrbss     r   message_from_headersr      s'    	6#6	6Bbiik**    )AsyncHTTPSConnectionAsyncConnectionc                  `    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y)AsyncHTTPResponsezAsync HTTP Response.c                .    || _         d | _        d| _        y )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                N    | j                   j                  j                  ||      S r&   )r    headersget)r#   namedefaults      r   	getheaderzAsyncHTTPResponse.getheader#   s    }}$$((w77r   c                \    t        | j                  j                  j                               S r&   )listr    r,   itemsr#   s    r   
getheaderszAsyncHTTPResponse.getheaders&   s     DMM))//122r   c                    | j                   't        t        | j                                     | _         | j                   S r&   )r!   r   r   r5   r4   s    r   msgzAsyncHTTPResponse.msg)   s/    99#$89J$KLDIyyr   c                .    | j                   j                  S r&   )r    coder4   s    r   statuszAsyncHTTPResponse.status/   s    }}!!!r   c                p    | j                   j                  r | j                   j                  j                  S y)N )r    errormessager4   s    r   reasonzAsyncHTTPResponse.reason3   s(    ====&&...r   c                ,    t        | j                        S r&   )reprr    r4   s    r   __repr__zAsyncHTTPResponse.__repr__9   s    DMM""r   r&   )__name__
__module____qualname____doc__r$   r*   r0   r5   propertyr7   r:   r?   rB    r   r   r   r      sZ    
"83  
 " "  
#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y)r   zAsync HTTP Connection.GET/NP   i  )httphttpsc                T    g | _         || _        || _        |xs
 t               | _        y r&   )r,   timeoutstrictr   http_client)r#   rQ   rP   rR   s       r   r$   zAsyncHTTPSConnection.__init__H   s&    &6*,r   c                    || _         || _        |	 |j                  } |       | _        |3| j
                  j                  t        |j                                      y y # t        $ r
 || _        Y Hw xY wr&   )	pathmethodr*   r'   AttributeErrorr,   extendr2   r3   )r#   rU   rT   r'   r,   r*   s         r   requestzAsyncHTTPSConnection.requestN   so    	#yy !F	LLW]]_ 56 	 " ! 	!s   A   A32A3c           	         t        | j                        }| j                  | j                  | j                  || j
                  | j                  | j                  d      S )NF)rU   r,   r'   connect_timeoutrequest_timeoutvalidate_cert)r
   r,   r   rT   rU   r'   rP   )r#   r,   s     r   
getrequestzAsyncHTTPSConnection.getrequest[   sL    $,,'||DIIdkk7!%DLL,0LL  O 	Or   c                    | j                         }|j                  t        | j                  |             | j                  j                  |      S r&   )r]   thenr   ResponserR   add_request)r#   callbackrX   s      r   getresponsez AsyncHTTPSConnection.getresponsea   s<    //#Yt}}h78++G44r   c                     y r&   rH   )r#   levels     r   set_debuglevelz#AsyncHTTPSConnection.set_debuglevelf       r   c                     y r&   rH   r4   s    r   connectzAsyncHTTPSConnection.connecti   rg   r   c                     y r&   rH   r4   s    r   closezAsyncHTTPSConnection.closel   rg   r   c                     || _         || _        y r&   )rU   rT   )r#   rU   rT   s      r   
putrequestzAsyncHTTPSConnection.putrequesto   s    	r   c                >    | j                   j                  ||f       y r&   )r,   append)r#   headervalues      r   	putheaderzAsyncHTTPSConnection.putheaders   s    VUO,r   c                     y r&   rH   r4   s    r   
endheaderszAsyncHTTPSConnection.endheadersv   rg   r   c                V    | j                   r| xj                   |z  c_         y || _         y r&   )r'   )r#   datas     r   sendzAsyncHTTPSConnection.sendy   s    99IIIDIr   c                *    d| j                         dS )Nz<AsyncHTTPConnection: >)r]   r4   s    r   rB   zAsyncHTTPSConnection.__repr__   s    '(9'<A>>r   )Ng      4@NNNr&   )rC   rD   rE   rF   r   r   r`   rU   rT   r'   default_portsr$   rX   r]   rc   rf   ri   rk   rm   rr   rt   rw   rB   rH   r   r   r   r   =   se     G HFDD#.M77O5
-?r   r   c                  &    e Zd ZdZddZd ZddZy)r   zAsync AWS Connection.Nc                8    || _         |xs
 t               | _        y r&   )sqs_connectionr   _httpclient)r#   r~   rR   r)   s       r   r$   zAsyncConnection.__init__   s    ,&6*,r   c                .    t        | j                        S )N)rR   )r   r   r4   s    r   get_http_connectionz#AsyncConnection.get_http_connection   s    #0@0@AAr   c                b   |xs
 t               }| j                         }t        |      r7 |||j                  |j                  |j
                  |j                  |       |S |j                  |j                  |j                  |j
                  |j                         |j                  |       |S Nrb   )
r   r   callablerU   rT   r'   r,   rX   urlrc   )r#   rX   senderrb   conns        r   _mexezAsyncConnection._mexe   s    (wy'')F4w||??H.  LL w8h/r   r&   rz   )rC   rD   rE   rF   r$   r   r   rH   r   r   r   r      s    7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  c                0    |si }t        |   ||fi | y r&   )superr$   )r#   r~   rR   http_client_paramsr)   	__class__s        r   r$   z AsyncAWSQueryConnection.__init__   s%    !!# 	/-	/r   c                $   |j                         }|r||d<   | j                  j                  }d}d|i}	|j                         dk(  rd}d|i}	t	        d
||d|	}
|j                  ||
|       |
j                         }| j                  ||	      S )NActionstandardrv   r-   zpresign-urlparams)rU   r   )signing_typer   rH   )copyr~   _request_signerlowerr   signpreparer   )r#   	operationparams_rT   verbrb   r   signerr   param_payloadrX   prepared_requests               r   make_requestz$AsyncAWSQueryConnection.make_request   s    (F8$$44 "(::<5 (L%v.MDDdDmDIw\B"??,zz*Xz>>r   c                d    | j                  ||||t        | j                  ||xs | ||            S r   )r   r   _on_list_ready)r#   r   r   markersrT   parentr   rb   s           r   get_listz AsyncAWSQueryConnection.get_list   sA      vtT##Xv~w ! 
 	
r   c                b    | j                  ||||t        | j                  ||xs | |            S r   )r   r   _on_obj_readyr#   r   r   rT   r   r   rb   s          r   
get_objectz"AsyncAWSQueryConnection.get_object   s>      vtT""Hfni ! 
 	
r   c                b    | j                  ||||t        | j                  ||xs | |            S r   )r   r   _on_status_readyr   s          r   
get_statusz"AsyncAWSQueryConnection.get_status   s>      vtT%%x4 ! 
 	
r   c                l   | j                   j                  j                  }|j                  | j                  k(  r*t        |j                  |      |j                        \  }}|S |j                  | j                  v s|j                  | j                  v rg S | j                  ||j                               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0>>??d111$--i8(:K:KIAv MOOt888OOt>>>
 I""8X]]_==r   c                   | j                   j                  j                  }|j                  | j                  k(  r*t        |j                  |      |j                        \  }}|S | j                  ||j                               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   so    ++00>>??d111$--i8(:K:KIAv M""8X]]_==r   c                   | j                   j                  j                  }|j                  | j                  k(  r4t        |j                  |      |j                        \  }}|j                  S | j                  ||j                               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  st    ++00>>??d111%--i8(:K:KJGQ <<""8X]]_==r   c                p    |sdnd}t        dj                  ||j                  |j                  |            S )Nz
Empty bodyz
HTTP ErrorzRequest {}  HTTP {}  {} ({}))	Exceptionr   r:   r?   )r#   r    r'   contexts       r   r   z#AsyncAWSQueryConnection._for_status  s7    &*,7>>X__hoot
  	r   rz   r&   )rK   NPOSTN)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      sY     " $ * # ? @ @+

"# "#JC? C?L 0uo ur   