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 )