
    ~h                         d dl 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	 Zd
 Zd Z G d d      Z G d d      Zy)    N)to_bytes)	to_native)add_params_to_qs)add_params_to_uri   )OAuth2Token)add_bearer_tokenc                     | j                    d| j                   }t        t        j                  t        |d                  }d| |d<   |||fS )N:latin1zBasic Authorization)	client_idclient_secretr   base64	b64encoder   )clientmethoduriheadersbodytextauths          O/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/authlib/oauth2/auth.pyencode_client_secret_basicr      sY    q!5!5 67DV%%htX&>?@D!'vGO    c                     t        |xs dd| j                  fd| j                  xs dfg      }d|v rt        t	        |            |d<   |||fS )N r   r   Content-Length)r   r   r   strlenr   r   r   r   r   s        r   encode_client_secret_postr"      sc    
&**+f228b9	
D 7"$'D	N !r   c                     |dk(  rt        |d| j                  fg      }|||fS t        |d| j                  fg      }d|v rt        t	        |            |d<   |||fS )NGETr   r   )r   r   r   r   r    r!   s        r   encode_noner%       sr    {F4D4D&E%FGGT!!DK1A1A#B"CDD7"$'D	N !r   c                   *    e Zd ZdZeeedZddZd Z	y)
ClientAutha  Attaches OAuth Client Information to HTTP requests.

    :param client_id: Client ID, which you get from client registration.
    :param client_secret: Client Secret, which you get from registration.
    :param auth_method: Client auth method for token endpoint. The supported
        methods for now:

        * client_secret_basic (default)
        * client_secret_post
        * none
    )client_secret_basicclient_secret_postnoneNc                 p    |d}|| _         || _        || j                  v r| j                  |   }|| _        y )Nr(   )r   r   DEFAULT_AUTH_METHODSauth_method)selfr   r   r-   s       r   __init__zClientAuth.__init__=   sB    /K"*$33333K@K&r   c                 ,    | j                  | ||||      S N)r-   )r.   r   r   r   r   s        r   preparezClientAuth.prepareI   s    fc7DAAr   r1   )
__name__
__module____qualname____doc__r   r"   r%   r,   r/   r2    r   r   r'   r'   *   s%    
  :7
'Br   r'   c                   6    e Zd ZdZdZdeiZddZd Zd Z	d Z
y)		TokenAutha  Attach token information to HTTP requests.

    :param token: A dict or OAuth2Token instance of an OAuth 2.0 token
    :param token_placement: The placement of the token, default is ``header``,
        available choices:

        * header (default)
        * body
        * uri
    bearerNc                 r    t        j                  |      | _        || _        || _        t               | _        y r1   )r   	from_dicttokentoken_placementr   sethooks)r.   r=   r>   r   s       r   r/   zTokenAuth.__init__\   s,     **51
.U
r   c                 8    t        j                  |      | _        y r1   )r   r<   r=   )r.   r=   s     r   	set_tokenzTokenAuth.set_tokenb   s     **51
r   c                    | j                   j                  d| j                        }| j                  |j	                            } || j                   d   |||| j
                        \  }}}| j                  D ]  } ||||      \  }}} |||fS )N
token_typeaccess_token)r=   getDEFAULT_TOKEN_TYPESIGN_METHODSlowerr>   r@   )r.   r   r   r   rD   signhooks          r   r2   zTokenAuth.preparee   s    ZZ^^L$2I2IJ
  !1!1!34!JJ~&WdD<P<P
Wd JJ 	:D!%c7D!9C$	: GT!!r   c                     | ` | `y r1   )r   r@   )r.   s    r   __del__zTokenAuth.__del__q   s    KJr   )headerN)r3   r4   r5   r6   rG   r	   rH   r/   rB   r2   rM   r7   r   r   r9   r9   M   s.    	 "./L2
"r   r9   )r   authlib.common.encodingr   r   authlib.common.urlsr   r   rfc6749r   rfc6750r	   r   r"   r%   r'   r9   r7   r   r   <module>rS      s@     , - 0 1   %
 B  BF& &r   