o
    b                     @   s   d dl Z d dlmZmZmZmZmZ d dlmZ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 deeZG dd deeZG dd deeZdS )    N)AsyncClientAuthClientRequestResponse)SIGNATURE_HMAC_SHA1SIGNATURE_TYPE_HEADER)
to_unicode)
ClientAuth)OAuth1Client   )extract_client_kwargs   
OAuthErrorc                   @   s2   e Zd ZdZdZdedejeedf fddZ	dS )
OAuth1Authz/Signs the httpx request using OAuth 1 (RFC5849)TrequestreturnNc                 c   sL    |  |jt|j|j|j\}}}tt||d< t|j|||dV  d S )NzContent-Length)methodurlheadersdata)preparer   strr   r   contentlenr   )selfr   r   r   body r   n/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/integrations/httpx_client/oauth1_client.py	auth_flow   s   
zOAuth1Auth.auth_flow)
__name__
__module____qualname____doc__Zrequires_request_bodyr   typing	Generatorr   r    r   r   r   r   r      s    "r   c                	   @   sJ   e Zd ZeZddddddeedf	ddZdddZdd Z	e
d	d
 ZdS )AsyncOAuth1ClientNFc                 K   sH   t |}tj| fi | tj| d f|||||||||	|
d
| d S N)
	client_idclient_secrettokentoken_secretredirect_urirsa_keyverifiersignature_methodsignature_typeforce_include_body)r   r   __init___OAuth1Clientr   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   kwargsZ_client_kwargsr   r   r   r3         
zAsyncOAuth1Client.__init__c                    sF   |r|| j _| j js| dd | j|fi |I dH }d| j _|S )a  Method for fetching an access token from the token endpoint.

        This is the final step in the OAuth 1 workflow. An access token is
        obtained using all previously obtained credentials, including the
        verifier from the authorization step.

        :param url: Access Token endpoint.
        :param verifier: A verifier string to prove authorization was granted.
        :param kwargs: Extra parameters to include for fetching access token.
        :return: A token dict.
        Zmissing_verifierzMissing "verifier" valueN)authr/   handle_error_fetch_token)r   r   r/   r6   r+   r   r   r   fetch_access_token.   s   z$AsyncOAuth1Client.fetch_access_tokenc                    sD   | j |fi |I d H }| I d H }| |jt|}|| _|S N)postZareadZparse_response_tokenstatus_coder	   r+   )r   r   r6   resptextr+   r   r   r   r:   B   s   zAsyncOAuth1Client._fetch_tokenc                 C   
   t | |r<   r   Z
error_typeZerror_descriptionr   r   r   r9   I      
zAsyncOAuth1Client.handle_errorr<   )r!   r"   r#   r   
auth_classr   r   r3   r;   r:   staticmethodr9   r   r   r   r   r'      s    

r'   c                	   @   s8   e Zd ZeZddddddeedf	ddZedd Z	dS )r   NFc                 K   sH   t |}tj| fi | tj| | f|||||||||	|
d
| d S r(   )r   r   r3   r4   r5   r   r   r   r3   Q   r7   zOAuth1Client.__init__c                 C   rA   r<   r   rB   r   r   r   r9   c   rC   zOAuth1Client.handle_error)
r!   r"   r#   r   rD   r   r   r3   rE   r9   r   r   r   r   r   N   s    
r   )r%   Zhttpxr   r   r   r   r   Zauthlib.oauth1r   r   Zauthlib.common.encodingr	   r
   Zauthlib.oauth1.clientr   r4   utilsr   Zbase_clientr   r   r'   r   r   r   r   <module>   s    5