B
    `.                 @   s   d Z ddlmZmZ ddlmZmZmZ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 ddlmZ G dd deeeeeZG dd deeeeeZG dd deeeeZG dd deeeeZG dd deeeeZdS )z
oauthlib.oauth2.rfc6749.endpoints.pre_configured
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This module is an implementation of various endpoints needed
for providing OAuth 2.0 RFC6749 servers.
    )absolute_importunicode_literals   )AuthorizationCodeGrantClientCredentialsGrantImplicitGrantRefreshTokenGrant%ResourceOwnerPasswordCredentialsGrant)BearerToken   )AuthorizationEndpoint)IntrospectEndpoint)ResourceEndpoint)RevocationEndpoint)TokenEndpointc               @   s   e Zd ZdZdddZdS )Serverz<An all-in-one endpoint featuring all four major grant types.Nc             O   s   t |}t|}t|}	t|}
t|}t||||}tj| d|||d|d tj| d||	|
|d|d t	j| dd|id t
| | t| | d	S )
a  Construct a new all-grants-in-one server.

        :param request_validator: An implementation of
                                  oauthlib.oauth2.RequestValidator.
        :param token_expires_in: An int or a function to generate a token
                                 expiration offset (in seconds) given a
                                 oauthlib.common.Request object.
        :param token_generator: A function to generate a token from a request.
        :param refresh_token_generator: A function to generate a token from a
                                        request for the refresh token.
        :param kwargs: Extra parameters to pass to authorization-,
                       token-, resource-, and revocation-endpoint constructors.
        code)r   tokennone)default_response_typeresponse_typesdefault_token_typeauthorization_code)r   passwordclient_credentialsrefresh_token)default_grant_typegrant_typesr   Bearer)default_tokentoken_typesN)r   r   r	   r   r   r
   r   __init__r   r   r   r   )selfrequest_validatortoken_expires_intoken_generatorrefresh_token_generatorargskwargs
auth_grantimplicit_grantpassword_grantcredentials_grantrefresh_grantbearer r/   _/home/dcms/DCMS/lib/python3.7/site-packages/oauthlib/oauth2/rfc6749/endpoints/pre_configured.pyr!      s.    zServer.__init__)NNN)__name__
__module____qualname____doc__r!   r/   r/   r/   r0   r      s    r   c               @   s   e Zd ZdZdddZdS )WebApplicationServerzLAn all-in-one endpoint featuring Authorization code grant and Bearer tokens.Nc       	      K   s|   t |}t|}t||||}tj| dd|i|d tj| d||d|d tj| dd|id t| | t| | dS )	a  Construct a new web application server.

        :param request_validator: An implementation of
                                  oauthlib.oauth2.RequestValidator.
        :param token_expires_in: An int or a function to generate a token
                                 expiration offset (in seconds) given a
                                 oauthlib.common.Request object.
        :param token_generator: A function to generate a token from a request.
        :param refresh_token_generator: A function to generate a token from a
                                        request for the refresh token.
        :param kwargs: Extra parameters to pass to authorization-,
                       token-, resource-, and revocation-endpoint constructors.
        r   )r   r   r   r   )r   r   )r   r   r   r   )r   r    N)	r   r   r
   r   r!   r   r   r   r   )	r"   r#   r%   r$   r&   r(   r)   r-   r.   r/   r/   r0   r!   R   s    zWebApplicationServer.__init__)NNN)r1   r2   r3   r4   r!   r/   r/   r/   r0   r5   M   s    r5   c               @   s   e Zd ZdZdddZdS )MobileApplicationServerzGAn all-in-one endpoint featuring Implicit code grant and Bearer tokens.Nc             K   sh   t |}t||||}tj| dd|i|d tj| dd|id tj| |dgd tj| |dgd dS )a  Construct a new implicit grant server.

        :param request_validator: An implementation of
                                  oauthlib.oauth2.RequestValidator.
        :param token_expires_in: An int or a function to generate a token
                                 expiration offset (in seconds) given a
                                 oauthlib.common.Request object.
        :param token_generator: A function to generate a token from a request.
        :param refresh_token_generator: A function to generate a token from a
                                        request for the refresh token.
        :param kwargs: Extra parameters to pass to authorization-,
                       token-, resource-, and revocation-endpoint constructors.
        r   )r   r   r   r   )r   r    access_token)supported_token_typesN)r   r
   r   r!   r   r   r   )r"   r#   r%   r$   r&   r(   r*   r.   r/   r/   r0   r!   y   s    
z MobileApplicationServer.__init__)NNN)r1   r2   r3   r4   r!   r/   r/   r/   r0   r6   t   s    r6   c               @   s   e Zd ZdZdddZdS )LegacyApplicationServerz]An all-in-one endpoint featuring Resource Owner Password Credentials grant and Bearer tokens.Nc       	      K   sf   t |}t|}t||||}tj| d||d|d tj| dd|id t| | t| | dS )a  Construct a resource owner password credentials grant server.

        :param request_validator: An implementation of
                                  oauthlib.oauth2.RequestValidator.
        :param token_expires_in: An int or a function to generate a token
                                 expiration offset (in seconds) given a
                                 oauthlib.common.Request object.
        :param token_generator: A function to generate a token from a request.
        :param refresh_token_generator: A function to generate a token from a
                                        request for the refresh token.
        :param kwargs: Extra parameters to pass to authorization-,
                       token-, resource-, and revocation-endpoint constructors.
        r   )r   r   )r   r   r   r   )r   r    N)r	   r   r
   r   r!   r   r   r   )	r"   r#   r%   r$   r&   r(   r+   r-   r.   r/   r/   r0   r!      s    z LegacyApplicationServer.__init__)NNN)r1   r2   r3   r4   r!   r/   r/   r/   r0   r9      s    r9   c               @   s   e Zd ZdZdddZdS )BackendApplicationServerzLAn all-in-one endpoint featuring Client Credentials grant and Bearer tokens.Nc             K   sh   t |}t||||}tj| dd|i|d tj| dd|id tj| |dgd tj| |dgd dS )a  Construct a client credentials grant server.

        :param request_validator: An implementation of
                                  oauthlib.oauth2.RequestValidator.
        :param token_expires_in: An int or a function to generate a token
                                 expiration offset (in seconds) given a
                                 oauthlib.common.Request object.
        :param token_generator: A function to generate a token from a request.
        :param refresh_token_generator: A function to generate a token from a
                                        request for the refresh token.
        :param kwargs: Extra parameters to pass to authorization-,
                       token-, resource-, and revocation-endpoint constructors.
        r   )r   r   r   r   )r   r    r7   )r8   N)r   r
   r   r!   r   r   r   )r"   r#   r%   r$   r&   r(   r,   r.   r/   r/   r0   r!      s    
z!BackendApplicationServer.__init__)NNN)r1   r2   r3   r4   r!   r/   r/   r/   r0   r:      s    r:   N)r4   
__future__r   r   r   r   r   r   r   r	   tokensr
   authorizationr   Z
introspectr   resourcer   Z
revocationr   r   r   r   r5   r6   r9   r:   r/   r/   r/   r0   <module>   s$   4&"$