Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions mergin/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,12 +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
delta = self._auth_session["expire"] - datetime.now(timezone.utc)
if delta.total_seconds() < 5:
self.log.info("Token has expired - refreshing...")
expire = self._auth_session.get("expire")
now = datetime.now(timezone.utc)
delta = expire - now
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"])
Expand Down Expand Up @@ -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(
Expand All @@ -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):
Expand Down
2 changes: 1 addition & 1 deletion mergin/merginproject.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
Expand Down