
    !<i,                         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 G d deee          Z G d dee	ee          ZdS )    )URL)RedirectResponse   )BaseApp)
OAuthError)AsyncOAuth1Mixin)AsyncOAuth2Mixin)AsyncOpenIDMixin)AsyncOAuth1Client)AsyncOAuth2Clientc                       e Zd Zd ZddZdS )StarletteAppMixinc                    K   |                     dd           }|r:| j        j        rd }n|j        }| j                            |||           d {V  d S t          d          )NstatezMissing state value)pop	frameworkcachesessionset_state_dataRuntimeError)selfrequestkwargsr   r   s        /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/authlib/integrations/starlette_client/apps.pysave_authorize_dataz%StarletteAppMixin.save_authorize_data   s}      

7D)) 	6~# *!/.//GGGGGGGGGGG4555    Nc                    K   |r$t          |t                    rt          |          } | j        |fi | d{V } | j        |fd|i| d{V  t          |d         d          S )a'  Create a HTTP Redirect for Authorization Endpoint.

        :param request: HTTP request instance from Starlette view.
        :param redirect_uri: Callback or redirect URI for authorization.
        :param kwargs: Extra parameters to include.
        :return: A HTTP redirect response.
        Nredirect_uriurli.  )status_code)
isinstancer   strcreate_authorization_urlr   r   )r   r   r   r   rvs        r   authorize_redirectz$StarletteAppMixin.authorize_redirect   s        	-J|S99 	-|,,L040HHHHHHHHHH&d&wPP\PRPPPPPPPPP5	s;;;;r   )N)__name__
__module____qualname__r   r%    r   r   r   r      s7        	6 	6 	6< < < < < <r   r   c                       e Zd ZeZd ZdS )StarletteOAuth1Appc                   K   t          |j                  }|                    d          }|st          d          | j                            |j        |           d {V }|st          d          |d         |d<   |                    |           | j                            |j        |           d {V   | j	        di | d {V S )Noauth_tokenzMissing "oauth_token" parameter)descriptionz)Missing "request_token" in temporary datarequest_tokenr)   )
dictquery_paramsgetr   r   get_state_datar   updateclear_state_datafetch_access_token)r   r   r   paramsr   datas         r   authorize_access_tokenz)StarletteOAuth1App.authorize_access_token,   s      g*++

=)) 	L)JKKKK^227?EJJJJJJJJ 	V)TUUUU"&"7fn--gouEEEEEEEEE,T,66v666666666r   N)r&   r'   r(   r   
client_clsr9   r)   r   r   r+   r+   )   s(        "J7 7 7 7 7r   r+   c                       e Zd ZeZd ZdS )StarletteOAuth2Appc                 P  K   |j                             dd          dk    r}|j                            d          }|r+|j                            d          }t          ||          |j                            d          |j                            d          d}ni|                                4 d {V }|                    d          |                    d          d}d d d           d {V  n# 1 d {V swxY w Y   | j        j        rd }n|j        }| j                            ||                    d                     d {V }| j        	                    ||                    d                     d {V  | 
                    ||          }|                    d	d           }	|                    d
d           }
|                    dd          } | j        di || d {V }d|v r/d|v r+|                     ||d         |	|
|           d {V }||d<   |S )NmethodGETerrorerror_description)r@   r.   coder   )rB   r   claims_options
claims_clsleewayx   id_tokennonce)rH   rC   rD   rE   userinfor)   )scoper2   r1   r   formr   r   r   r3   r5   _format_state_paramsr   r6   parse_id_token)r   r   r   r@   r.   r7   rK   r   
state_datarC   rD   rE   tokenrI   s                 r   r9   z)StarletteOAuth2App.authorize_access_tokenA   s     =Xu--66(,,W55E G%2667JKK u+FFFF  ,0088 -11':: FF
 ||~~        HHV,,!XXg..                            > 	&GGoG>88&**WBUBUVVVVVVVV
n--gvzz'7J7JKKKKKKKKK**:v>>$4d;;ZZd33
Hc**-d-AAA&AAAAAAAA7j#8#8!00 )-% 1        H !)E*s   9,C77
DDN)r&   r'   r(   r   r:   r9   r)   r   r   r<   r<   <   s*         #J) ) ) ) )r   r<   N)starlette.datastructuresr   starlette.responsesr   base_clientr   r   base_client.async_appr   r	   base_client.async_openidr
   httpx_clientr   r   r   r+   r<   r)   r   r   <module>rV      s<   ( ( ( ( ( ( 0 0 0 0 0 0 ! ! ! ! ! ! $ $ $ $ $ $ 4 4 4 4 4 4 4 4 4 4 4 4 7 7 7 7 7 7 , , , , , , , , , , , ,< < < < < < < <87 7 7 7 7*,<g 7 7 7&. . . . .')97. . . . .r   