
    k7i                         S SK Jr  S SK Jr  S SK Jr  S SK Jr  SSKJr  SSKJr  SSKJr  SS	KJ	r	  SS
KJ
r
  SSKJr  SSKJr   " S S5      r " S S\\\5      r " S S\\\
\5      rg)    )g)redirect)request)session   )BaseApp)OAuth1Mixin)OAuth2Mixin)
OAuthError)OpenIDMixin)OAuth1Session)OAuth2Sessionc                   ^    \ rS rSr\S 5       r\R                  S 5       rS rS rS	S jr	Sr
g)
FlaskAppMixin   c                     SU R                    3n[        R                  " U5      nU(       a  U$ U R                  (       a  U R                  5       nX l        U$ g N_oauth_token_)namer   get_fetch_tokentoken)selfattrr   s      `/home/james-whalen/.local/lib/python3.13/site-packages/authlib/integrations/flask_client/apps.pyr   FlaskAppMixin.token   sM    tyyk*dL%%'EJL     c                 B    SU R                    3n[        [        X!5        g r   )r   setattrr   )r   r   r   s      r   r   r      s    tyyk*4r   c                     U R                   $ Nr   )r   argskwargss      r   _get_requested_token"FlaskAppMixin._get_requested_token    s    zzr   c                     UR                  SS 5      nU(       a!  U R                  R                  [        X!5        g [	        S5      e)NstatezMissing state value)pop	frameworkset_state_datar   RuntimeError)r   r$   r(   s      r   save_authorize_data!FlaskAppMixin.save_authorize_data#   s5    

7D)NN))'5A455r   Nc                 l    U R                   " U40 UD6nU R                  " SSU0UD6  [        US   5      $ )zCreate a HTTP Redirect for Authorization Endpoint.

:param redirect_uri: Callback or redirect URI for authorization.
:param kwargs: Extra parameters to include.
:return: A HTTP redirect response.
redirect_uriurl )create_authorization_urlr-   r   )r   r0   r$   rvs       r   authorize_redirect FlaskAppMixin.authorize_redirect*   s>     **<B6B  AlAbA5	""r   r"   r!   )__name__
__module____qualname____firstlineno__propertyr   setterr%   r-   r5   __static_attributes__r2   r   r   r   r      s;      \\   6	#r   r   c                       \ rS rSr\rS rSrg)FlaskOAuth1App6   c                    [         R                  R                  SS9nUR                  S5      nU(       d	  [	        SS9eU R
                  R                  [        U5      nU(       d	  [	        SS9eUS   US'   UR                  U5        U R
                  R                  [        U5        U R                  " S0 UD6nXPl        U$ )	8Fetch access token in one step.

:return: A token dict.
T)flatoauth_tokenzMissing "oauth_token" parameter)descriptionz)Missing "request_token" in temporary datarequest_tokenr2   )r   r#   to_dictr   r   r*   get_state_datar   updateclear_state_datafetch_access_tokenr   )r   r$   paramsr(   datar   s         r   authorize_access_token%FlaskOAuth1App.authorize_access_token9   s    
 %%4%0

=))JKK~~,,We<)TUU"&"7f''7''1&1
r   r"   N)r7   r8   r9   r:   r   
client_clsrN   r=   r2   r   r   r?   r?   6   s    Jr   r?   c                       \ rS rSr\rS rSrg)FlaskOAuth2AppO   c                    [         R                  S:X  a  [         R                  R                  S5      nU(       a(  [         R                  R                  S5      n[	        X#S9e[         R                  R                  S5      [         R                  R                  S5      S.nO?[         R
                  R                  S5      [         R
                  R                  S5      S.nU R                  R                  [        UR                  S5      5      nU R                  R                  [        UR                  S5      5        U R                  XT5      nUR                  SS	5      nUR                  S
S	5      nUR                  SS5      nU R                  " S0 UDUD6n	Xl        SU	;   a   SU;   a  U R                  U	US   UUUS9n
XS'   U	$ )rB   GETerrorerror_description)rV   rE   coder(   )rX   r(   claims_optionsN
claims_clsleewayx   id_tokennonce)r^   rY   rZ   r[   userinfor2   )r   methodr#   r   r   formr*   rH   r   rJ   _format_state_paramsr)   rK   r   parse_id_token)r   r$   rV   rE   rL   
state_datarY   rZ   r[   r   r_   s              r   rN   %FlaskOAuth2App.authorize_access_tokenR   s   
 >>U"LL$$W-E%ll../BC uFF  ((0 ))'2F  ((0 ))'2F
 ^^227FJJw<OP
''G1DE**:>$4d;ZZd3
Hc*'';&;F;
7j#8** )-% + H !)*r   r"   N)r7   r8   r9   r:   r   rP   rN   r=   r2   r   r   rR   rR   O   s    J(r   rR   N)flaskr   r   r   r   base_clientr   r	   r
   r   r   requests_clientr   r   r   r?   rR   r2   r   r   <module>ri      sS        ! % % $ % + +$# $#N]K 2+]Kg +r   