
    in.                         d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlZd dlmZmZ d dlmZ d dlmZ ddlmZmZ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 dl"m#Z$ d dl%m&Z&  G d d          Z'dS )    N)
SSLContext)DictUnionOptionalAnySequenceList)	BasicAuthClientSession)
Attachment)Block   )_debug_log_response_build_request_headers_build_bodyget_user_agent)WebhookResponse   )load_http_proxy_from_env)AsyncRetryHandler)async_default_handlers)HttpRequest)HttpResponse)
RetryStatec                   ^   e Zd ZU eed<   eed<   ee         ed<   ee         ed<   ee         ed<   e	ed<   ee
         ed<   eeef         ed<   ej        ed	<   ee         ed
<   	 	 	 	 	 	 	 	 	 	 	 d!dededee         dee         dee         de	dee
         deeeef                  dee         dee         d	eej                 d
eee                  fdZddddddddddd
dee         deeeeeef         ef                           deeeeeef         ef                           dee         dee	         dee	         dee	         dee	         deeeef                  deeeef                  defdZd"deeef         deeeef                  defdZdeeef         deeef         defd ZdS )#AsyncWebhookClienturltimeoutsslproxysessiontrust_env_in_sessionauthdefault_headersloggerretry_handlers   NFuser_agent_prefixuser_agent_suffixc                    || _         || _        || _        || _        || _        || _        || _        |r|ni | _        t          |	|
          | j        d<   ||nt          j
        t                    | _        ||nt                      | _        | j        *t          | j                                                  dk    r!t#          | j                  }|	|| _        dS dS dS )aN  API client for Incoming Webhooks and `response_url`

        https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks/

        Args:
            url: Complete URL to send data (e.g., `https://hooks.slack.com/XXX`)
            timeout: Request timeout (in seconds)
            ssl: `ssl.SSLContext` to use for requests
            proxy: Proxy URL (e.g., `localhost:9000`, `http://localhost:9000`)
            session: `aiohttp.ClientSession` instance
            trust_env_in_session: True/False for `aiohttp.ClientSession`
            auth: Basic auth info for `aiohttp.ClientSession`
            default_headers: Request headers to add to all requests
            user_agent_prefix: Prefix for User-Agent header value
            user_agent_suffix: Suffix for User-Agent header value
            logger: Custom logger
        z
User-AgentNr   )r   r   r   r    r"   r!   r#   r$   r   logging	getLogger__name__r%   r   r&   lenstripr   )selfr   r   r   r    r!   r"   r#   r$   r(   r)   r%   r&   env_variables                 Y/root/projects/butler/venv/lib/python3.11/site-packages/slack_sdk/webhook/async_client.py__init__zAsyncWebhookClient.__init__'   s    @ 
$8!	2AIr-;<MO`-a-a\* & 2ff8I(8S8S0>0JnnPfPhPh:TZ%5%5%7%7!8!8A!=!=3DK@@L')


 (' ">!=    )
textattachmentsblocksresponse_typereplace_originaldelete_originalunfurl_linksunfurl_mediametadataheadersr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   returnc       
         T   K   |                      |||||||||	d	|
           d{V S )av  Performs a Slack API request and returns the result.

        Args:
            text: The text message (even when having blocks, setting this as well is recommended as it works as fallback)
            attachments: A collection of attachments
            blocks: A collection of Block Kit UI components
            response_type: The type of message (either 'in_channel' or 'ephemeral')
            replace_original: True if you use this option for response_url requests
            delete_original: True if you use this option for response_url requests
            unfurl_links: Option to indicate whether text url should unfurl
            unfurl_media: Option to indicate whether media url should unfurl
            metadata: Metadata attached to the message
            headers: Request headers to append only for this request

        Returns:
            Webhook response
        )	r5   r6   r7   r8   r9   r:   r;   r<   r=   bodyr>   N)	send_dict)r0   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   s              r2   sendzAsyncWebhookClient.sendX   sm      > ^^ * !.$4#2 , ,$
 
  $ 
 
 
 
 
 
 
 
 	
r4   rB   c                    K   |                      t          |          t          | j        |                     d{V S )aY  Performs a Slack API request and returns the result.

        Args:
            body: JSON data structure (it's still a dict at this point),
                if you give this argument, body_params and files will be skipped
            headers: Request headers to append only for this request
        Returns:
            Webhook response
        rA   N)_perform_http_requestr   r   r$   )r0   rB   r>   s      r2   rC   zAsyncWebhookClient.send_dict   s^       //T""*4+?II 0 
 
 
 
 
 
 
 
 	
r4   c          
      $  K   t          j        |          }d|d<   d }| j        o| j        j         }|r| j        }n9t	          j        t	          j        | j                  | j        | j	                  }d }d }	 ||| j
        | j        d}t          d| j        ||          }	t                      }
d}|d	k     r|d
z  }d|
_        d }d}| j        j        t$          j        k    r(| j                            d| j         d| d|            	  |j        d| j        fi |4 d {V }	 |                                 d {V }t/          |j        |j        ||                    d          nd           }nR# t          j        $ r@ | j                            d| j                    t/          |j        |j                  }Y nw xY w|j        dk    r| j        D ]}|                    |
|	|           d {V rr| j        j        t$          j        k    r8| j                            dt?          |          j          d| j         d           |!                    |
|	|           d {V   n|
j        du rhtE          | j        |j        ||j                  }tG          | j        |           |cd d d           d {V  |s|$                                 d {V  S S 	 d d d           d {V  n# 1 d {V swxY w Y   n# tJ          $ r}|}| j        D ]}|                    |
|	||           d {V ru| j        j        t$          j        k    r:| j                            dt?          |          j          d| j         d|            |!                    |
|	||           d {V   n|
j        du r|Y d }~nd }~ww xY w|d	k     |||s|$                                 d {V  S S |# |s|$                                 d {V  w w xY w)Nzapplication/json;charset=utf-8zContent-Type)total)r   r#   	trust_env)r>   datar   r    POST)methodr   r>   body_paramsr   d   r   F zSending a request - url: z, body: z, headers: zutf-8)status_coder>   rJ   z7No response data returned from the following API call: )rP   r>   i  )staterequestresponsezA retry handler found: z
 for POST z - rate_limited)r   rP   rB   r>   )rQ   rR   rS   errorz - )&jsondumpsr!   closedaiohttpr   ClientTimeoutr   r#   r"   r   r    RetryHttpRequestr   r   next_attempt_requestedr%   levelr+   DEBUGdebugrR   r5   RetryHttpResponsestatusr>   encodeContentTypeErrorr&   can_retry_asyncinfotyper-   prepare_for_next_attempt_asyncr   r   close	Exception)r0   rB   r>   str_bodyr!   use_running_session
last_errorresprequest_kwargsretry_requestretry_statecounter_for_safetyretry_responseresponse_bodyreshandleres                    r2   rF   z(AsyncWebhookClient._perform_http_request   s     
4(("B+/"lF4<3F/F 	lGG+-DLAAAY3  G +/
*.e	&" x	 N -H 	  M %,,K!"$s**"a'"5:2>B ";$55K%%&r$(&r&rT\&r&rip&r&rsssC).wvtxRR>RR *( *( *( *( *( *( *(VY25((**,<,<,<,<,<,<M->,/J(+FSF_]%9%9'%B%B%Bei. . .NN
  '7    K--.rhlhp.r.rsss->,/J(+. . .NNN :,,+/+> * *)0)@)@*5,9-; *A *" *" $" $" $" $" $" $" !*
 (,{'8GM'I'I(,(8(8-Rd7mmF\ -R -R8<-R -R -R)* )* )* +2*P*P.90=1? +Q +& +& %& %& %& %& %& %& %&
 %*E!*" '=FF#2$(H,/J%2(+	$ $ $D 0TBBB#'U*( *( *( *( *( *( *( *( *( *( *( *( *(R ' &mmoo%%%%%%%%&O GE*( *( *( *( *( *( *( *( *( *( *( *( *( *( *( *( *( *( *( *( *( *( *( *( *( *( *(X ! ) ) )!"J#'#6 " "!(!8!8"-$1%3"#	 "9 " "       "  ${0GMAA $ 0 0$td7mm>T$t$tdhdl$t$tqr$t$t!" !" !" #*"H"H&1(5)7&'	 #I # #        "E!"$ #9UBB(( CBBBB+)o %s**^  ' &mmoo%%%%%%%%&  ' &mmoo%%%%%%%%&s   :BO0 L 'K2)AE76K27AGK2GC)K2/L  L 2
K<<L ?K< L O0 
OB+N>9O0 >OO0 .O0 0P)r'   NNNFNNNNNN)N)r-   
__module____qualname__str__annotations__intr   r   r   boolr
   r   r+   Loggerr	   r   r3   r   r   r   r   r   r   rD   rC   rF    r4   r2   r   r      s:        	HHHLLL	*	C=m$$$$
9
#s(^###N*++++
 $(#+/%*$(48+/+/+/<@/* /*/* /* j!	/*
 }/* -(/* #/* y!/* "$sCx.1/* $C=/* $C=/* (/* !&7!89/* /* /* /*h #MQCG'++/*.'+'+-1,0.
 .
 .
 sm.
 huT#s(^Z-G'HIJ	.

 %S#X(=">?@.
  }.
 #4..
 "$.
 tn.
 tn.
 4S>*.
 $sCx.).
 
.
 .
 .
 .
`
 
DcN 
Xd3PS8n=U 
ap 
 
 
 
x4S> xDQTVYQYN x_n x x x x x xr4   r   )(rU   r+   r   r   typingr   r   r   r   r   r	   rX   r
   r   slack_sdk.models.attachmentsr   slack_sdk.models.blocksr   internal_utilsr   r   r   r   webhook_responser   proxy_env_variable_loaderr   "slack_sdk.http_retry.async_handlerr   +slack_sdk.http_retry.builtin_async_handlersr   slack_sdk.http_retry.requestr   rZ   slack_sdk.http_retry.responser   r_   slack_sdk.http_retry.stater   r   r}   r4   r2   <module>r      s           = = = = = = = = = = = = = = = =  , , , , , , , , 3 3 3 3 3 3 ) ) ) ) ) )            . - - - - - @ @ @ @ @ @ @ @ @ @ @ @ N N N N N N H H H H H H K K K K K K 1 1 1 1 1 1t t t t t t t t t tr4   