o
    b0
                     @   s\   d dl mZ ddlmZmZ ddlmZmZ ddlm	Z	 G dd deZ
G dd	 d	e	Zd
S )    )RedirectResponse   )AsyncOAuth1ClientAsyncOAuth2Client)FrameworkIntegration
OAuthError)AsyncRemoteAppc                   @   s2   e Zd ZeZeZdddZdd Ze	dd Z
dS )	StartletteIntegrationNc                 C   s   d S N )selftokenZrefresh_tokenZaccess_tokenr   r   p/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/integrations/starlette_client/integration.pyupdate_token   s   z"StartletteIntegration.update_tokenc                 C   sP   |rt |jS |jd}|r|jd}t||d|jd|jddS )NerrorZerror_description)r   descriptioncodestate)r   r   )dictZquery_paramsgetr   )r   Zrequest_token_urlrequestr   r   r   r   r   generate_access_token_params   s   


z2StartletteIntegration.generate_access_token_paramsc                 C   sL   | j si S i }|D ]}d|| }| j j|d d}|d ur#|||< q	|S )Nz{}_{})default)configformatupperr   )ZoauthnameparamsrvkZconf_keyvr   r   r   load_config   s   z!StartletteIntegration.load_config)NN)__name__
__module____qualname__r   Zoauth1_client_clsr   Zoauth2_client_clsr   r   staticmethodr!   r   r   r   r   r	      s    
r	   c                   @   s(   e Zd ZdddZdd ZdddZdS )	StarletteRemoteAppNc                    s@   | j |fi |I dH }| j|fd|i| t|d ddS )a'  Create a HTTP Redirect for Authorization Endpoint.

        :param request: Starlette Request instance.
        :param redirect_uri: Callback or redirect URI for authorization.
        :param kwargs: Extra parameters to include.
        :return: Starlette ``RedirectResponse`` instance.
        Nredirect_uriurli.  )status_code)Zcreate_authorization_urlZsave_authorize_datar   )r   r   r'   kwargsr   r   r   r   authorize_redirect,   s   z%StarletteRemoteApp.authorize_redirectc                    s,   |  |}|| | jdi |I dH S )zsFetch an access token.

        :param request: Starlette Request instance.
        :return: A token dict.
        Nr   )Zretrieve_access_token_paramsupdateZfetch_access_token)r   r   r*   r   r   r   r   authorize_access_token8   s   

z)StarletteRemoteApp.authorize_access_tokenc                    s0   d|vrdS | j |d}| |||I dH S )z9Return an instance of UserInfo from token's ``id_token``.Zid_tokenNnonce)Z	frameworkZget_session_dataZ_parse_id_token)r   r   r   Zclaims_optionsr.   r   r   r   parse_id_tokenB   s
   z!StarletteRemoteApp.parse_id_tokenr
   )r"   r#   r$   r+   r-   r/   r   r   r   r   r&   *   s    

r&   N)Zstarlette.responsesr   Zhttpx_clientr   r   Zbase_clientr   r   Zbase_client.async_appr   r	   r&   r   r   r   r   <module>   s    #