mirror of
https://github.com/malmeloo/FindMy.py.git
synced 2026-04-18 04:53:57 +02:00
reports: refresh remote anisette headers
At time of commit, the headers seem to be good for bit over a minute.
This commit is contained in:
@@ -4,6 +4,7 @@ from __future__ import annotations
|
|||||||
import base64
|
import base64
|
||||||
import locale
|
import locale
|
||||||
import logging
|
import logging
|
||||||
|
import time
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
@@ -160,6 +161,8 @@ class BaseAnisetteProvider(Closable, ABC):
|
|||||||
class RemoteAnisetteProvider(BaseAnisetteProvider):
|
class RemoteAnisetteProvider(BaseAnisetteProvider):
|
||||||
"""Anisette provider. Fetches headers from a remote Anisette server."""
|
"""Anisette provider. Fetches headers from a remote Anisette server."""
|
||||||
|
|
||||||
|
_ANISETTE_DATA_VALID_FOR = 30
|
||||||
|
|
||||||
def __init__(self, server_url: str) -> None:
|
def __init__(self, server_url: str) -> None:
|
||||||
"""Initialize the provider with URL to te remote server."""
|
"""Initialize the provider with URL to te remote server."""
|
||||||
super().__init__()
|
super().__init__()
|
||||||
@@ -169,6 +172,7 @@ class RemoteAnisetteProvider(BaseAnisetteProvider):
|
|||||||
self._http = HttpSession()
|
self._http = HttpSession()
|
||||||
|
|
||||||
self._anisette_data: dict[str, str] | None = None
|
self._anisette_data: dict[str, str] | None = None
|
||||||
|
self._anisette_data_expires_at: float = 0
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@override
|
@override
|
||||||
@@ -197,11 +201,12 @@ class RemoteAnisetteProvider(BaseAnisetteProvider):
|
|||||||
with_client_info: bool = False,
|
with_client_info: bool = False,
|
||||||
) -> dict[str, str]:
|
) -> dict[str, str]:
|
||||||
"""See `BaseAnisetteProvider.get_headers`_."""
|
"""See `BaseAnisetteProvider.get_headers`_."""
|
||||||
if self._anisette_data is None:
|
if self._anisette_data is None or time.time() >= self._anisette_data_expires_at:
|
||||||
logging.info("Fetching anisette data from %s", self._server_url)
|
logging.info("Fetching anisette data from %s", self._server_url)
|
||||||
|
|
||||||
r = await self._http.get(self._server_url)
|
r = await self._http.get(self._server_url)
|
||||||
self._anisette_data = r.json()
|
self._anisette_data = r.json()
|
||||||
|
self._anisette_data_expires_at = time.time() + self._ANISETTE_DATA_VALID_FOR
|
||||||
|
|
||||||
return await super().get_headers(user_id, device_id, serial, with_client_info)
|
return await super().get_headers(user_id, device_id, serial, with_client_info)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user