diff --git a/.gitignore b/.gitignore index d044591..0e660c0 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ __pycache__ *.pyc .DS_Store my_settings.py -*.orig \ No newline at end of file +*.orig +.lazy_login \ No newline at end of file diff --git a/EagleEyev3/__init__.py b/EagleEyev3/__init__.py index 4efb16e..66d5f6e 100644 --- a/EagleEyev3/__init__.py +++ b/EagleEyev3/__init__.py @@ -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 = [] + + +