B
    ²ô`ÿ  ã               @   s8   d Z ddlmZmZ ddlmZmZ G dd„ deƒZdS )zˆ
authlib.openid.connect.core.tokens
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This module contains methods for adding JWT tokens to requests.
é    )Úabsolute_importÚunicode_literals)Ú	TokenBaseÚrandom_token_generatorc               @   s4   e Zd ZdZddd„Zddd„Zdd	„ Zd
d„ ZdS )ÚJWTToken)Úrequest_validatorÚtoken_generatorÚrefresh_token_generatorÚ
expires_inNc             C   s*   || _ |pt| _|p| j| _|p"d| _d S )Ni  )r   r   r   r	   r
   )Úselfr   r   r
   r	   © r   úR/home/dcms/DCMS/lib/python3.7/site-packages/oauthlib/openid/connect/core/tokens.pyÚ__init__   s    
zJWTToken.__init__Fc             C   s2   t | jƒr|  |¡}n| j}||_| j dd|¡S )z2Create a JWT Token, using requestvalidator method.N)Úcallabler
   r   Zget_jwt_bearer_token)r   ÚrequestZrefresh_tokenr
   r   r   r   Úcreate_token   s
    
zJWTToken.create_tokenc             C   s<   d }d|j kr$|j  d¡dd … }n|j}| j ||j|¡S )NÚAuthorizationé   )ÚheadersÚgetZaccess_tokenr   Zvalidate_jwt_bearer_tokenZscopes)r   r   Útokenr   r   r   Úvalidate_request(   s    
zJWTToken.validate_requestc             C   s:   |j  dd¡dd … }| d¡r2| d¡dkr2dS dS d S )	Nr   Ú r   ZeyÚ.)é   é   é
   r   )r   r   Ú
startswithÚcount)r   r   r   r   r   r   Úestimate_type1   s    zJWTToken.estimate_type)NNNN)F)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   r   r   r   r   r   r   r   r      s    

	r   N)Ú__doc__Ú
__future__r   r   Zoauthlib.oauth2.rfc6749.tokensr   r   r   r   r   r   r   Ú<module>   s   