
    !<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
  G d
 d          Z G d deee          Z G d deeee          ZdS )    )HttpResponseRedirect   )BaseApp)OAuth1Mixin)OAuth2Mixin)
OAuthError)OpenIDMixin)OAuth1Session)OAuth2Sessionc                       e Zd Zd ZddZdS )DjangoAppMixinc                     |                     dd           }|r#| j                            |j        ||           d S t	          d          )NstatezMissing state value)pop	frameworkset_state_datasessionRuntimeError)selfrequestkwargsr   s       /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/authlib/integrations/django_client/apps.pysave_authorize_dataz"DjangoAppMixin.save_authorize_data   sN    

7D)) 	6N))'/5&IIIII4555    Nc                 h     | j         |fi |} | j        |fd|i| t          |d                   S )a$  Create a HTTP Redirect for Authorization Endpoint.

        :param request: HTTP request instance from Django view.
        :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   r   r   r   rvs        r   authorize_redirectz!DjangoAppMixin.authorize_redirect   sP     +T*<BB6BB  JJ|JrJJJ#BuI...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 )DjangoOAuth1Appc                    |j                                         }|                    d          }|st          d          | j                            |j        |          }|st          d          |d         |d<   |                    |           | j                            |j        |            | j	        di |S )Fetch access token in one step.

        :param request: HTTP request instance from Django view.
        :return: A token dict.
        oauth_tokenzMissing "oauth_token" parameter)descriptionz)Missing "request_token" in temporary datarequest_tokenr$   )
GETdictgetr   r   get_state_datar   updateclear_state_datafetch_access_token)r   r   r   paramsr   datas         r   authorize_access_tokenz&DjangoOAuth1App.authorize_access_token$   s     !!##

=)) 	L)JKKKK~,,W_eDD 	V)TUUUU"&"7f''???&t&00000r   N)r!   r"   r#   r
   
client_clsr5   r$   r   r   r&   r&   !   s(        J1 1 1 1 1r   r&   c                       e Zd ZeZd ZdS )DjangoOAuth2Appc                 t   |j         dk    r}|j                            d          }|r+|j                            d          }t          ||          |j                            d          |j                            d          d}n5|j                            d          |j                            d          d}| j                            |j        |                    d                    }| j                            |j        |                    d                     | 	                    ||          }|
                    dd	          }|
                    d
d	          }|
                    dd          }	 | j        di ||}
d|
v r)d|v r%|                     |
|d         |||	          }||
d<   |
S )r(   r,   errorerror_description)r:   r*   coder   )r<   r   claims_optionsN
claims_clsleewayx   id_tokennonce)rB   r=   r>   r?   userinfor$   )methodr,   r.   r   POSTr   r/   r   r1   _format_state_paramsr   r2   parse_id_token)r   r   r   r:   r*   r3   
state_datar=   r>   r?   tokenrC   s               r   r5   z&DjangoOAuth2App.authorize_access_token<   s    >U""KOOG,,E G%koo.ABB u+FFFF// 11 FF  ((00 ))'22 F
 ^227?FJJwDWDWXX
''G9L9LMMM**:v>>$4d;;ZZd33
Hc**'';;&;F;;7j#8#8** )-% +  H !)E*r   N)r!   r"   r#   r   r6   r5   r$   r   r   r8   r8   9   s(        J' ' ' ' 'r   r8   N)django.httpr   base_clientr   r   r   r   r	   requests_clientr
   r   r   r&   r8   r$   r   r   <module>rM      s%   , , , , , , ! ! ! ! ! ! % % % % % % % % % % % % $ $ $ $ $ $ % % % % % % + + + + + + + + + + + +/ / / / / / / /*1 1 1 1 1nk7 1 1 10* * * * *nk; * * * * *r   