
    'j=                        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 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 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)Logger)OptionalDictCallable	AwaitableSequence)	BoltError)'error_oauth_settings_invalid_type_async)AsyncCallbackOptionsDefaultAsyncCallbackOptionsAsyncSuccessArgsAsyncFailureArgs)AsyncOAuthSettings _build_default_install_page_html)AsyncBoltRequest)BoltResponse)SlackApiError)OAuthStateUtils)Installation)SQLite3InstallationStore)SQLite3OAuthStateStore)AsyncWebClient)AsyncSlackResponse)create_async_web_clientc            &          e Zd ZU eed<   eed<   ee         ed<   eed<   eed<   eege	e
         f         ed<   eege	e
         f         ed<   ddd	d
ee         dee         defdZedefd            Zedefd            Zedddddddddddej        ej        dddfdedee         dee         dee         deee                  deee                  dee         dee         dee         dee         dee         dee         dededed
ee         dee         dd f$d            Zdede
fdZdedefdZd ededefd!Zd"ededefd#Zd$e d%ee         fd&Z!dede
fd'Z"d(edee#         fd)Z$ded*e#fd+Z%dS ),AsyncOAuthFlowsettings	client_idredirect_uriinstall_pathredirect_uri_pathsuccess_handlerfailure_handlerN)clientloggerr%   r&   c                   || _         || _        t          |t                    st	          t                                || _        | j        | j        | j        _        | j        j        | _        | j        j	        | _	        | j        j
        | _
        | j        j        | _        t          || j        j        | j        j                  | _        |j        | j        |_        |j        j        | _        |j        j        | _        dS )a  The module to run the Slack app installation flow (OAuth flow).

        Args:
            client: The `slack_sdk.web.async_client.AsyncWebClient` instance.
            logger: The logger.
            settings: OAuth settings to configure this module.
        N)r&   state_utilsredirect_uri_page_renderer)_async_client_logger
isinstancer   r	   r
   r   r&   r   r    r!   r"   r   r(   r)   default_callback_optionscallback_optionssuccessr#   failurer$   )selfr%   r&   r   s       b/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/slack_bolt/oauth/async_oauth_flow.py__init__zAsyncOAuthFlow.__init__'   s     $($677 	GCEEFFF <##'<DM 0 M6 M6!%!@(C1'+}'O)
 )
 )
%
 $,(,(EH%'8@'8@    returnc                 R    | j         t          | j                  | _         | j         S )N)r&   )r*   r   r&   r1   s    r2   r%   zAsyncOAuthFlow.clientN   s)    %!8!L!L!LD!!r4   c                 Z    | j         t          j        t                    | _         | j         S N)r+   logging	getLogger__name__r7   s    r2   r&   zAsyncOAuthFlow.loggerT   s$    <",X66DL|r4   Fdatabaseauthorization_urlclient_secretscopesuser_scopesr.   success_urlfailure_urlstate_cookie_namestate_expiration_secondsinstallation_store_bot_onlyc           
         |pt           j        d         }|pt           j        d         }|p2t           j                            dd                              d          }|p2t           j                            dd                              d          }|pt           j                            d          }|t	          ||          nt	          |||	          }|t          ||
          nt          |||          }t          |pt                      |t          di d|d|d|d|d|d|d|d|	d|
d|d|d|d|d|d|d|          S )NSLACK_CLIENT_IDSLACK_CLIENT_SECRETSLACK_SCOPES ,SLACK_USER_SCOPESSLACK_REDIRECT_URI)r=   r   )r=   r   r&   )r=   expiration_seconds)r=   rO   r&   r>   r   r?   r@   rA   r    r!   r"   r.   rB   rC   installation_storerF   state_storerD   rE   )r%   r&   r    )	osenvirongetsplitr   r   r   r   r   )clsr=   r>   r   r?   r@   rA   r    r!   r"   r.   rB   rC   rD   rE   rF   r%   r&   rP   rQ   s                       r2   sqlite3zAsyncOAuthFlow.sqlite3^   s    4 >,=!>	%J4I)JH2:>>."==CCCHH!WRZ^^4G%L%L%R%RSV%W%W#Krz~~6J'K'K ~ %h)LLLL)8yY_``` 	 ~ #HIabbbb'Nfouvvv 	
 -^--'   "3"3 $) ,m	
 v (K *\ *\ #4"3 "2!1 (K (K $6#5  -H,G!$ (K%& #4"3'( *B)A)
 
 
 	
r4   requestc           	        K   d }|                      d|           d {V }| j        j        du rV|                     |           d {V }|                      ||           d {V }| j        j                            |          }| j        j        rJ|                     ||           d {V }t          d|| 	                    ddi|           d {V           S t          dd| 	                    d|d|           d {V           S )	NrK   T   Content-Typeztext/html; charset=utf-8)statusbodyheadersi.  )r\   Location)
build_authorize_urlr   state_validation_enabledissue_new_stater(   build_set_cookie_for_new_stateinstall_page_rendering_enabledbuild_install_page_htmlr   append_set_cookie_headers)r1   rY   set_cookie_valueurlstatehtmls         r2   handle_installationz"AsyncOAuthFlow.handle_installation   s     *.,,R99999999=1T99..w77777777E00@@@@@@@@C#}8WWX]^^=7 	55c7CCCCCCCCD"<<#%?@$            "<<%?SQQ$          r4   c                 N   K   | j         j                                         d {V S r9   )r   rQ   async_issue)r1   rY   s     r2   rc   zAsyncOAuthFlow.issue_new_state   s/      ].::<<<<<<<<<r4   rj   c                    K   |j                             d          }| j        j                            |||d         nd           S )Nteamr   )rj   rp   )queryrU   r   authorize_url_generatorgenerate)r1   rj   rY   team_idss       r2   ra   z"AsyncOAuthFlow.build_authorize_url   sP      ,3M,=,=f,E,E}4== ( 4!$ > 
 
 	
r4   ri   c                 $   K   t          |          S r9   r   )r1   ri   rY   s      r2   rf   z&AsyncOAuthFlow.build_install_page_html   s      /444r4   r_   rh   c                    K   ||g|d<   |S )Nz
Set-CookierR   )r1   r_   rh   s      r2   rg   z(AsyncOAuthFlow.append_set_cookie_headers   s      '%5$6GL!r4   c                 4  K   |j                             dd g          d         }|7|                     t          ||d| j        | j                             d {V S | j        j        du r|j                             dd g          d         }| j        j                            ||j	                  s7|                     t          |dd| j        | j                             d {V S | j        j
                            |           d {V }|s7|                     t          |d	d
| j        | j                             d {V S |j                             dd g          d         }|7|                     t          |dd
| j        | j                             d {V S |                     |           d {V }|7|                     t          |dd
| j        | j                             d {V S 	 |                     ||           d {V  nO# t          $ rB}|                     t          |d|d| j        | j                             d {V cY d }~S d }~ww xY w|                     t!          ||| j        | j                             d {V S )Nerrorr   r[   )rY   reasonsuggested_status_coder   defaultTrj   invalid_browseri  invalid_statei  codemissing_codeinvalid_codestorage_errori  )rY   ry   rx   rz   r   r{   )rY   installationr   r{   )rq   rU   r$   r   r   r-   rb   r(   is_valid_browserr_   rQ   async_consumerun_installationstore_installationr	   r#   r   )r1   rY   rx   rj   valid_state_consumedr~   r   errs           r2   handle_callbackzAsyncOAuthFlow.handle_callback   s      !!'D62215-- # *-!] 9           =1T99#*=#4#4Wtf#E#Ea#HE=,==eW_UU 	!11$ '0.1!% $ =           *.)B)P)PQV)W)W#W#W#W#W#W#W ' 	!11$ '..1!% $ =           }  $003<-- #)*-!] 9           "22488888888-- #)*-!] 9          	))'<@@@@@@@@@@ 
	 
	 
	-- #**-!] 9  	 	 	 	 	 	 	 	 	 	 	 	 	 	
	 )))5	  
 
 
 
 
 
 
 
 	
s   8H 
I!7II!I!r~   c                   K   	 | j                             || j        j        | j        j        | j        j                   d {V }|                    d          pi }|                    d          pd}|                    d          pi }|                    d          pi }|                    d          pi }|                    d          }d }	d }
|)| j                             |	           d {V }|d
         }	|du r|                    d          }
t          d,i d|                    d          d|                    d          d|                    d          d|
d|                    d          d|                    d          d|d
|	d|                    d          d|                    d          d|                    d          d|                    d          d|                    d          d|                    d          d|                    d          d |                    d          d!|                    d          d"|                    d          d#|                    d$          d%|                    d&          d'|                    d(          d|d)|                    d)          S # t          $ r-}d*| d+| }| j
                            |           Y d }~d S d }~ww xY w)-N)r~   r   r?   r    
enterpriseis_enterprise_installFrp   authed_userincoming_webhookaccess_token)tokenbot_idTri   app_identerprise_ididenterprise_namenameenterprise_urlteam_id	team_name	bot_tokenbot_user_id
bot_scopesscopebot_refresh_tokenrefresh_tokenbot_token_expires_in
expires_inuser_id
user_tokenrA   user_refresh_tokenuser_token_expires_inincoming_webhook_urlincoming_webhook_channelchannelincoming_webhook_channel_id
channel_id"incoming_webhook_configuration_urlconfiguration_url
token_typez2Failed to fetch oauth.v2.access result with code: z
 - error: rR   )r%   oauth_v2_accessr   r   r?   r    rU   	auth_testr   r   r&   warning)r1   r~   oauth_responseinstalled_enterpriser   installed_team	installerr   r   r   r   r   emessages                 r2   r   zAsyncOAuthFlow.run_installation9  s     4	7;{7R7R-1"m9!]7	 8S 8 8 2 2 2 2 2 2N 4B3E3El3S3S3YWY *8*<*<=T*U*U*^Y^!-;-?-?-G-G-M2N(6(:(:=(I(I(ORI/=/A/ABT/U/U/[Y['5'9'9.'I'II$(F,0N$"&+"7"7i"7"H"HHHHHHH	"8,$,,!*u!5!5   %))(333266t<<< !5 8 8 @ @ @  .~	
 '**4000 ),,V444 $) v +..}=== *--g666 #1"4"4_"E"E"E &4%7%7%E%E%E "d+++ %==888 &MM'222  $-==#A#A#A!" '0mmL&A&A&A#$ &6%9%9%%@%@%@%& *:)=)=i)H)H)H'( -=,@,@,N,N,N)* 4D3G3GH[3\3\3\+, '<&;-. *--l;;;/ 4  	 	 	^4^^[\^^GK(((44444	s   K	K 
L"L  Lr   c                 T   K   | j         j                            |           d {V  d S r9   )r   rP   
async_save)r1   rY   r   s      r2   r   z!AsyncOAuthFlow.store_installationp  s7      m.99,GGGGGGGGGGGr4   )&r<   
__module____qualname__r   __annotations__strr   r   r   r   r   r   r   r   r3   propertyr%   r&   classmethodr   default_cookie_namedefault_expiration_secondsr   r   intboolrX   r   rl   rc   ra   rf   dictrg   r   r   r   r   rR   r4   r2   r   r      s            NNN3-/0)L2IIJJJJ/0)L2IIJJJJ
 ,0#'	%A %A %A (%A  	%A
 %%A %A %A %AN " " " " X"
     X 
 ,0#''+*./3&*&*+/;?%)%) "1!D(7(R,1+/#'-A
 A
A
 $C=	A

 C=A
  }A
 #'A
 hsm,A
 smA
 smA
 $C=A
 ##78A
 c]A
 c]A
$ %A
& #&'A
( &*)A
* (+A
,  -A
. 
/A
 A
 A
 [A
N1A l    <=-= =# = = = =
s 
=M 
RU 
 
 
 
5 5?O 5TW 5 5 5 5t xX[}    Z
-= Z
, Z
 Z
 Z
 Z
~53 58L3I 5 5 5 5nH0@ HP\ H H H H H Hr4   r   )+r:   rS   r   typingr   r   r   r   r   slack_bolt.errorr	   slack_bolt.logger.messagesr
   'slack_bolt.oauth.async_callback_optionsr   r   r   r   %slack_bolt.oauth.async_oauth_settingsr   slack_bolt.oauth.internalsr    slack_bolt.request.async_requestr   slack_bolt.responser   slack_sdk.errorsr   slack_sdk.oauthr   "slack_sdk.oauth.installation_storer   *slack_sdk.oauth.installation_store.sqlite3r   #slack_sdk.oauth.state_store.sqlite3r   slack_sdk.web.async_clientr   "slack_sdk.web.async_slack_responser   slack_bolt.util.async_utilsr   r   rR   r4   r2   <module>r      s    				       @ @ @ @ @ @ @ @ @ @ @ @ @ @ & & & & & & N N N N N N            E D D D D D G G G G G G = = = = = = , , , , , , * * * * * * + + + + + + ; ; ; ; ; ; O O O O O O F F F F F F 5 5 5 5 5 5 A A A A A A ? ? ? ? ? ?UH UH UH UH UH UH UH UH UH UHr4   