authlib/oauth2/rfc8628/models.py
import time
class DeviceCredentialMixin:
def get_client_id(self):
raise NotImplementedError()
def get_scope(self):
raise NotImplementedError()
def get_user_code(self):
raise NotImplementedError()
def is_expired(self):
raise NotImplementedError()
class DeviceCredentialDict(dict, DeviceCredentialMixin):
def get_client_id(self):
return self['client_id']
def get_scope(self):
return self.get('scope')
def get_user_code(self):
return self['user_code']
def get_nonce(self):
return self.get('nonce')
def get_auth_time(self):
return self.get('auth_time')
def is_expired(self):
expires_at = self.get('expires_at')
if expires_at:
return expires_at < time.time()
return False