97 lines
2.4 KiB
Python
97 lines
2.4 KiB
Python
"""Utils needed for Google Hangouts."""
|
|
|
|
from hangups import CredentialsPrompt, GoogleAuthError, RefreshTokenCache
|
|
|
|
|
|
class Google2FAError(GoogleAuthError):
|
|
"""A Google authentication request failed."""
|
|
|
|
|
|
class HangoutsCredentials(CredentialsPrompt):
|
|
"""Google account credentials.
|
|
|
|
This implementation gets the user data as params.
|
|
"""
|
|
|
|
def __init__(self, email, password, pin=None, auth_code=None):
|
|
"""Google account credentials.
|
|
|
|
:param email: Google account email address.
|
|
:param password: Google account password.
|
|
:param pin: Google account verification code.
|
|
"""
|
|
self._email = email
|
|
self._password = password
|
|
self._pin = pin
|
|
self._auth_code = auth_code
|
|
|
|
def get_email(self):
|
|
"""Return email.
|
|
|
|
:return: Google account email address.
|
|
"""
|
|
return self._email
|
|
|
|
def get_password(self):
|
|
"""Return password.
|
|
|
|
:return: Google account password.
|
|
"""
|
|
return self._password
|
|
|
|
def get_verification_code(self):
|
|
"""Return the verification code.
|
|
|
|
:return: Google account verification code.
|
|
"""
|
|
if self._pin is None:
|
|
raise Google2FAError()
|
|
return self._pin
|
|
|
|
def set_verification_code(self, pin):
|
|
"""Set the verification code.
|
|
|
|
:param pin: Google account verification code.
|
|
"""
|
|
self._pin = pin
|
|
|
|
def get_authorization_code(self):
|
|
"""Return the oauth authorization code.
|
|
|
|
:return: Google oauth code.
|
|
"""
|
|
return self._auth_code
|
|
|
|
def set_authorization_code(self, code):
|
|
"""Set the google oauth authorization code.
|
|
|
|
:param code: Oauth code returned after authentication with google.
|
|
"""
|
|
self._auth_code = code
|
|
|
|
|
|
class HangoutsRefreshToken(RefreshTokenCache):
|
|
"""Memory-based cache for refresh token."""
|
|
|
|
def __init__(self, token):
|
|
"""Memory-based cache for refresh token.
|
|
|
|
:param token: Initial refresh token.
|
|
"""
|
|
super().__init__("")
|
|
self._token = token
|
|
|
|
def get(self):
|
|
"""Get cached refresh token.
|
|
|
|
:return: Cached refresh token.
|
|
"""
|
|
return self._token
|
|
|
|
def set(self, refresh_token):
|
|
"""Cache a refresh token.
|
|
|
|
:param refresh_token: Refresh token to cache.
|
|
"""
|
|
self._token = refresh_token
|