added ability to save access_token for lazy_logins during development

full_example
Mark Cotton 2023-05-29 20:28:23 -05:00
parent a0b3ac0861
commit d6d8283afb
2 changed files with 59 additions and 1 deletions

3
.gitignore vendored
View File

@ -2,4 +2,5 @@ __pycache__
*.pyc
.DS_Store
my_settings.py
*.orig
*.orig
.lazy_login

View File

@ -34,6 +34,11 @@ class EagleEyev3():
self.base_url = None
self.lazy_login = True
if self.lazy_login:
self._load_access_token()
def _load_vars_from_settings(self):
"""
Load variables from the settings module.
@ -47,6 +52,25 @@ class EagleEyev3():
# Note: Please see the note in settings.py about trailing slashes and modify this line if needed
self.redirect_uri = f"{settings.server_protocol}://{settings.server_host}:{settings.server_port}"
def _save_access_token(self):
with open(".lazy_login", "w") as json_file:
json.dump({
'access_token': self.access_token,
'refresh_token': self.refresh_token,
'current_user': self.current_user
}, json_file)
def _load_access_token(self):
with open(".lazy_login", "r") as json_file:
saved = json.load(json_file)
if 'access_token' in saved:
self.access_token = saved['access_token']
if 'refresh_token' in saved:
self.refresh_token = saved['refresh_token']
self.get_base_url(cascade=True)
def login_tokens(self, code=None, cascade=True):
"""
Obtains login tokens using the authorization code.
@ -72,6 +96,10 @@ class EagleEyev3():
success = True
self.access_token = response_json['access_token']
self.refresh_token = response_json['refresh_token']
if self.lazy_login:
self._save_access_token()
if cascade:
self.get_base_url()
else:
@ -358,3 +386,32 @@ class EagleEyev3():
"response_http_status": response.status_code,
"data": response_json
}
class Device():
def __init__(self, id=None, name=None, status=None, account_id=None):
self.id = id
self.name = name
self.status = status
self.account_id = account_id
def get_id(self):
return self.id
def get_status(self):
return self.status
class Camera(Device):
def __init__(self, id=None, name=None, status=None, account_id=None, bridge_id=None):
super().__init__(id=id, name=name, status=status, account_id=account_id)
self.bridge_id = bridge_id
self.previews = []
self.videos = []