1from oauthlib.oauth2.rfc8628.endpoints.device_authorization import ( 
    2    DeviceAuthorizationEndpoint, 
    3) 
    4 
    5from typing import Callable, Optional 
    6from oauthlib.openid.connect.core.request_validator import RequestValidator 
    7 
    8 
    9class DeviceApplicationServer(DeviceAuthorizationEndpoint): 
    10    """An all-in-one endpoint featuring Authorization code grant and Bearer tokens.""" 
    11 
    12    def __init__( 
    13        self, 
    14        request_validator: RequestValidator, 
    15        verification_uri: str, 
    16        interval: int = 5, 
    17        verification_uri_complete: Optional[str] = None,  # noqa: FA100 
    18        user_code_generator: Callable[[None], str] = None, 
    19        **kwargs, 
    20    ): 
    21        """Construct a new web application server. 
    22 
    23        :param request_validator: An implementation of 
    24                                  oauthlib.oauth2.rfc8626.RequestValidator. 
    25        :param interval: How long the device needs to wait before polling the server 
    26        :param verification_uri: the verification_uri to be send back. 
    27        :param user_code_generator: a callable that allows the user code to be configured. 
    28        """ 
    29        DeviceAuthorizationEndpoint.__init__( 
    30            self, 
    31            request_validator, 
    32            interval=interval, 
    33            verification_uri=verification_uri, 
    34            user_code_generator=user_code_generator, 
    35            verification_uri_complete=verification_uri_complete, 
    36        )