
    ~h`                         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y)    )HttpResponseRedirect   )BaseApp)OAuth1Mixin)OAuth2Mixin)
OAuthError)OpenIDMixin)OAuth1Session)OAuth2Sessionc                       e Zd Zd ZddZy)DjangoAppMixinc                     |j                  dd       }|r(| j                  j                  |j                  ||       y t	        d      )NstatezMissing state value)pop	frameworkset_state_datasessionRuntimeError)selfrequestkwargsr   s       c/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/authlib/integrations/django_client/apps.pysave_authorize_dataz"DjangoAppMixin.save_authorize_data   s;    

7D)NN))'//5&I455    Nc                 n     | 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   sD     +T**<B6B   J|JrJ#BuI..r   )N)__name__
__module____qualname__r   r     r   r   r   r      s    6
/r   r   c                       e Zd ZeZd Zy)DjangoOAuth1Appc                 ~   |j                   j                         }|j                  d      }|st        d      | j                  j                  |j                  |      }|st        d      |d   |d<   |j                  |       | j                  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     !!#

=))JKK~~,,W__eD)TUU"&"7f''?&t&&000r   N)r!   r"   r#   r
   
client_clsr5   r$   r   r   r&   r&   !   s    J1r   r&   c                       e Zd ZeZd Zy)DjangoOAuth2Appc                 d   |j                   dk(  r}|j                  j                  d      }|r(|j                  j                  d      }t        ||      |j                  j                  d      |j                  j                  d      d}n7|j                  j                  d      |j                  j                  d      d}| j
                  j                  |j                  |j                  d            }| j
                  j                  |j                  |j                  d             | j                  ||      }|j                  dd	      }|j                  d
d	      }|j                  dd      }	 | j                  di ||}
d|
v r"d|v r| j                  |
|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"KKOOG,E%kkoo.AB u+FF/ 1F  ((0 ))'2F
 ^^227??FJJwDWX
''G9LM**:v>$4d;ZZd3
Hc*''';&;F;7j#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      sI    , ! % % $ % + +/ /*1nk7 10*nk; *r   