
    '[f                     D    d dl Z ddlmZ dgZdZ G d d          Zd ZdS )    N   )FrameworkIntegration	BaseOAuth)	client_idclient_secretrequest_token_urlrequest_token_paramsaccess_token_urlaccess_token_paramsrefresh_token_urlrefresh_token_paramsauthorize_urlauthorize_paramsapi_base_urlclient_kwargsserver_metadata_urlc                   F    e Zd ZdZdZdZeZd
dZd Z	ddZ
d Zd Zd	 ZdS )r   z`Registry for oauth clients.

    Create an instance for registry::

        oauth = OAuth()
    Nc                 L    i | _         i | _        || _        || _        || _        d S N)	_registry_clientscachefetch_tokenupdate_token)selfr   r   r   s       ]/var/www/piapp/venv/lib/python3.11/site-packages/authlib/integrations/base_client/registry.py__init__zBaseOAuth.__init__   s-    
&(    c                    || j         v r| j         |         S || j        vrdS | j        |         \  }}|                    dd          }|r$|j        r|j        }|                    |           n|} | j        ||fi |}|                     || j                  }|r |||fi |}n4|                    d          r | j	        ||fi |}n | j
        ||fi |}|| j         |<   |S )a>  Create or get the given named OAuth client. For instance, the
        OAuth registry has ``.register`` a twitter client, developers may
        access the client with::

            client = oauth.create_client('twitter')

        :param: name: Name of the remote application
        :return: OAuth remote app
        N
client_clsr   )r   r   popOAUTH_APP_CONFIGupdategenerate_client_kwargsframework_integration_clsr   getoauth1_client_clsoauth2_client_cls)r   name	overwriteconfigr    kwargs	frameworkclients           r   create_clientzBaseOAuth.create_client$   s@    4=  =&&t~%%4 N40	6ZZd33
 	*5 	0FMM&!!!!F,,T9GGGG224DD	 	GZ	4::6::FFZZ+,, 	G+T+ItFFvFFFF+T+ItFFvFFF$dr   Fc                 D    ||f| j         |<   |                     |          S )a  Registers a new remote application.

        :param name: Name of the remote application.
        :param overwrite: Overwrite existing config with framework settings.
        :param kwargs: Parameters for :class:`RemoteApp`.

        Find parameters for the given remote app class. When a remote app is
        registered, it can be accessed with *named* attribute::

            oauth.register('twitter', client_id='', ...)
            oauth.twitter.get('timeline')
        )r   r/   )r   r)   r*   r,   s       r   registerzBaseOAuth.registerI   s)     !*62t!!$'''r   c                    |                     dd           }|                     dd           }|                     |t                    }|rt          |||          }|s!| j        rt          j        | j        |          }||d<   |                    d          s(|s!| j        rt          j        | j        |          }||d<   |S )Nr   r   r   )	r!   load_configOAUTH_CLIENT_PARAMS_config_clientr   	functoolspartialr&   r   )r   r)   r*   r,   r   r   r+   s          r   r$   z BaseOAuth.generate_client_kwargsY   s    jj55zz.$77!!$(;<< 	?#FFI>>F 	Dt/ 	D#+D,<dCCK +}zz-.. 	2 JD$5 J(01BDII%1F>"r   c                 :    | j                             | ||          S r   )r%   r3   )r   r)   paramss      r   r3   zBaseOAuth.load_configm   s    -99$fMMMr   c                     	 t                               | |          S # t          $ r3 || j        v r|                     |          cY S t          d|z            w xY w)NzNo such client: %s)object__getattribute__AttributeErrorr   r/   )r   keys     r   __getattr__zBaseOAuth.__getattr__p   ss    	=**4555 	= 	= 	=dn$$))#..... !5!;<<<	=s    (AA)NNN)F)__name__
__module____qualname____doc__r'   r(   r   r%   r   r/   r1   r$   r3   r?    r   r   r   r      s           4) ) ) )# # #J( ( ( (   (N N N= = = = =r   c                     t           D ]b}|                     |d           }||vr|||<   "|r>|r<t          ||         t                    r||                             |           ]|||<   c|S r   )r4   r&   
isinstancedictr#   )r+   r,   r*   kvs        r   r5   r5   y   s       JJq$F??F1II 	1 	&)T** q	  ####q	Mr   )r6   framework_integrationr   __all__r4   r   r5   rD   r   r   <module>rL      s|        7 7 7 7 7 7- d= d= d= d= d= d= d= d=N
 
 
 
 
r   