From 729fb2ac194cf3a1b623169047dcaf6f6ef111b4 Mon Sep 17 00:00:00 2001 From: Herman Snevajs Date: Tue, 9 Sep 2025 11:29:59 +0200 Subject: [PATCH 1/2] Add auth logging --- mergin/client.py | 11 +++++++---- mergin/merginproject.py | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/mergin/client.py b/mergin/client.py index e9d0b21e..3e00434f 100644 --- a/mergin/client.py +++ b/mergin/client.py @@ -202,9 +202,11 @@ def validate_auth(self): if self._auth_session: # Refresh auth token if it expired or will expire very soon - delta = self._auth_session["expire"] - datetime.now(timezone.utc) + expire = self._auth_session.get("expire") + now = datetime.now(timezone.utc) + delta = expire - now + self.log.debug("Auth expire=%s now=%s delta=%.1fs", expire, now, delta.total_seconds()) if delta.total_seconds() < 5: - self.log.info("Token has expired - refreshing...") if self._auth_params.get("login", None) and self._auth_params.get("password", None): self.log.info("Token has expired - refreshing...") self.login(self._auth_params["login"], self._auth_params["password"]) @@ -303,7 +305,6 @@ def login(self, login, password): :type password: String """ params = {"login": login, "password": password} - self._auth_session = None self.log.info(f"Going to log in user {login}") try: resp = self.post( @@ -314,12 +315,14 @@ def login(self, login, password): except ClientError as e: self.log.info(f"Login problem: {e.detail}") raise LoginError(e.detail) + expires = dateutil.parser.parse(session["expire"]) self._auth_session = { "token": f"Bearer {session['token']}", - "expire": dateutil.parser.parse(session["expire"]), + "expire": expires, } self._user_info = {"username": data["username"]} self.log.info(f"User {data['username']} successfully logged in.") + self.log.debug(f"The auth token expires at {expires}") return session def username(self): diff --git a/mergin/merginproject.py b/mergin/merginproject.py index a82f5796..90136516 100644 --- a/mergin/merginproject.py +++ b/mergin/merginproject.py @@ -427,7 +427,7 @@ def get_push_changes(self): file["checksum"] = checksum file["chunks"] = [str(uuid.uuid4()) for i in range(math.ceil(file["size"] / UPLOAD_CHUNK_SIZE))] - # need to check for for real changes in geodiff files using geodiff tool (comparing checksum is not enough) + # need to check for real changes in geodiff files using geodiff tool (comparing checksum is not enough) not_updated = [] for file in changes["updated"]: path = file["path"] From 2ee16c4d6988cc67487be812b9eba9b7e88fa61c Mon Sep 17 00:00:00 2001 From: Herman Snevajs Date: Wed, 10 Sep 2025 13:49:58 +0200 Subject: [PATCH 2/2] use f-string to unify --- mergin/client.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mergin/client.py b/mergin/client.py index 3e00434f..b0fe05a7 100644 --- a/mergin/client.py +++ b/mergin/client.py @@ -199,14 +199,14 @@ def user_agent_info(self): def validate_auth(self): """Validate that client has valid auth token or can be logged in.""" - if self._auth_session: # Refresh auth token if it expired or will expire very soon expire = self._auth_session.get("expire") now = datetime.now(timezone.utc) delta = expire - now - self.log.debug("Auth expire=%s now=%s delta=%.1fs", expire, now, delta.total_seconds()) - if delta.total_seconds() < 5: + delta_seconds = delta.total_seconds() + if delta_seconds < 5: + self.log.debug(f"Token has expired: expire={expire} now={now} delta={delta_seconds:.1f}s") if self._auth_params.get("login", None) and self._auth_params.get("password", None): self.log.info("Token has expired - refreshing...") self.login(self._auth_params["login"], self._auth_params["password"])