ForcePilot/backend/package/yuxi/channel/extensions/wechat_ilink/status.py

39 lines
1.0 KiB
Python
Raw Normal View History

from __future__ import annotations
import logging
import time
logger = logging.getLogger(__name__)
class ILinkStatus:
def __init__(self):
self.connected = False
self.last_poll_at: float = 0.0
self.last_token_refresh_at: float = 0.0
self.poll_errors: int = 0
self.token_errors: int = 0
def record_poll_success(self) -> None:
self.last_poll_at = time.time()
self.poll_errors = 0
def record_poll_error(self) -> None:
self.poll_errors += 1
def record_token_refresh(self) -> None:
self.last_token_refresh_at = time.time()
self.token_errors = 0
def record_token_error(self) -> None:
self.token_errors += 1
def build_summary(self) -> dict:
return {
"connected": self.connected,
"last_poll_at": self.last_poll_at,
"last_token_refresh_at": self.last_token_refresh_at,
"poll_errors": self.poll_errors,
"token_errors": self.token_errors,
}