
    ~hT                     *    d dl Z d Zd Zd Zd Zd Zy)    Nc                       fd}|S )zCreate an ``query_client`` function that can be used in authorization
    server.

    :param session: SQLAlchemy session
    :param client_model: Client model class
    c                 f    j                        }|j                  |       j                         S )N)	client_idquery	filter_byfirst)r   qclient_modelsessions     f/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/authlib/integrations/sqla_oauth2/functions.pyquery_clientz.create_query_client_func.<locals>.query_client   s+    MM,'{{Y{/5577     )r   r   r   s   `` r   create_query_client_funcr      s    8 r   c                       fd}|S )zCreate an ``save_token`` function that can be used in authorization
    server.

    :param session: SQLAlchemy session
    :param token_model: Token model class
    c                     |j                   r|j                   j                         }nd }|j                  } d|j                  |d| }j	                  |       j                          y )N)r   user_idr   )userget_user_idclientr   addcommit)tokenrequestr   r   itemr   token_models        r   
save_tokenz*create_save_token_func.<locals>.save_token   sZ    <<ll..0GGPV%5%5wP%PDr   r   )r   r   r   s   `` r   create_save_token_funcr      s     r   c                       fd}|S )zCreate an ``query_token`` function for revocation, introspection
    token endpoints.

    :param session: SQLAlchemy session
    :param token_model: Token model class
    c                 B   j                        }|dk(  r |j                  |       j                         S |dk(  r |j                  |       j                         S |j                  |       j                         }|r|S |j                  |       j                         S )Naccess_tokenr"   refresh_token)r$   r   )r   token_type_hintr
   r   r   r   s       r   query_tokenz,create_query_token_func.<locals>.query_token0   s    MM+&n,;;E;288::/;;U;399;;{{{.446K{{{/5577r   r   )r   r   r&   s   `` r   create_query_token_funcr'   (   s    
8 r   c                 J     ddl m} t         |       G  fdd|      }|S )zCreate a revocation endpoint class with SQLAlchemy session
    and token model.

    :param session: SQLAlchemy session
    :param token_model: Token model class
    r   )RevocationEndpointc                   "    e Zd Z fdZfdZy)7create_revocation_endpoint.<locals>._RevocationEndpointc                      ||      S )Nr   )selfr   r%   r&   s      r   r&   zCcreate_revocation_endpoint.<locals>._RevocationEndpoint.query_tokenK   s    uo66r   c                     t        t        j                               }|j                  j                  d      }||_        |dk7  r||_        j                  |       j                          y )Nr%   r"   )inttimeformgetaccess_token_revoked_atrefresh_token_revoked_atr   r   )r-   r   r   nowhintr   s        r   revoke_tokenzDcreate_revocation_endpoint.<locals>._RevocationEndpoint.revoke_tokenN   sV    diik"C<<##$56D,/E)~%14.KKNNr   N)__name__
__module____qualname__r&   r7   )r&   r   s   r   _RevocationEndpointr+   J   s    	7	r   r;   )authlib.oauth2.rfc7009r)   r'   )r   r   r)   r;   r&   s   `   @r   create_revocation_endpointr=   ?   s)     :)';?K0  r   c                 2     ddl m}  G  fdd|      }|S )zCreate an bearer token validator class with SQLAlchemy session
    and token model.

    :param session: SQLAlchemy session
    :param token_model: Token model class
    r   )BearerTokenValidatorc                       e Zd Z fdZy)<create_bearer_token_validator.<locals>._BearerTokenValidatorc                 f    j                        }|j                  |      j                         S )Nr#   r   )r-   token_stringr
   r   r   s      r   authenticate_tokenzOcreate_bearer_token_validator.<locals>._BearerTokenValidator.authenticate_tokend   s+    k*A;;L;9??AAr   N)r8   r9   r:   rD   )r   r   s   r   _BearerTokenValidatorrA   c   s	    	Br   rE   )authlib.oauth2.rfc6750r?   )r   r   r?   rE   s   ``  r   create_bearer_token_validatorrG   Z   s     <B 4 B
 ! r   )r0   r   r   r'   r=   rG   r   r   r   <module>rH      s!    *.6!r   