U
    vci-                     @   s   d 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 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.
   )AuthorizationCodeGrantClientCredentialsGrantImplicitGrantRefreshTokenGrant%ResourceOwnerPasswordCredentialsGrant)BearerToken   )AuthorizationEndpoint)IntrospectEndpoint)ResourceEndpoint)RevocationEndpoint)TokenEndpoint    )DeviceCodeGrantc                   @   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
    and extension grants.
    Nc              	   O   s   t || _t|| _t|| _t|| _t|| _	t
|f|| _t||||| _tj| d| j| j| jd| jd tj| d| j| j| j| j	| jd| jd tj| dd| j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Zdefault_response_typeZresponse_typesdefault_token_typeauthorization_code)r   passwordclient_credentialsrefresh_tokenz,urn:ietf:params:oauth:grant-type:device_codeZdefault_grant_typegrant_typesr   BearerZdefault_tokenZtoken_typesN)r   
auth_grantr   implicit_grantr   password_grantr   credentials_grantr   refresh_grantr   Zdevice_code_grantr   bearerr	   __init__r   r   r   r
   )selfrequest_validatortoken_expires_intoken_generatorrefresh_token_generatorargskwargs r,   T/tmp/pip-unpacked-wheel-bhz3g0dq/oauthlib/oauth2/rfc6749/endpoints/pre_configured.pyr$   !   sN    




     zServer.__init__)NNN__name__
__module____qualname____doc__r$   r,   r,   r,   r-   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| ji| jd tj| d| j| jd| jd t	j| dd| j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   N)r   r   r   r"   r   r#   r	   r$   r   r   r   r
   r%   r&   r(   r'   r)   r+   r,   r,   r-   r$   e   s:    

   	  zWebApplicationServer.__init__)NNNr.   r,   r,   r,   r-   r3   `   s
      r3   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   sr   t || _t||||| _tj| dd| ji| jd tj| dd| j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   access_tokenZsupported_token_typesN)	r   r   r   r#   r	   r$   r   r   r
   r4   r,   r,   r-   r$      s8    
         z MobileApplicationServer.__init__)NNNr.   r,   r,   r,   r-   r5      s
      r5   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   st   t || _t|| _t||||| _tj| d| j| jd| jd tj| dd| j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   N)r   r    r   r"   r   r#   r   r$   r   r   r
   r4   r,   r,   r-   r$      s.    

   	  z LegacyApplicationServer.__init__)NNNr.   r,   r,   r,   r-   r8      s
      r8   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   sr   t || _t||||| _tj| dd| ji| jd tj| dd| j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   r6   r7   N)	r   r!   r   r#   r   r$   r   r   r
   r4   r,   r,   r-   r$      s8    
         z!BackendApplicationServer.__init__)NNNr.   r,   r,   r,   r-   r9      s
      r9   N)r2   r   r   r   r   r   r   tokensr   authorizationr	   Z
introspectr
   resourcer   Z
revocationr   r   r   Z#oauthlib.oauth2.rfc8628.grant_typesr   r   r3   r5   r8   r9   r,   r,   r,   r-   <module>   sP   
    G
    5
   /
   /
   