31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
|
|
import logging
|
||
|
|
|
||
|
|
from yuxi.channel.extensions.freshdesk.types import FreshdeskAccount, FreshdeskMode
|
||
|
|
|
||
|
|
logger = logging.getLogger(__name__)
|
||
|
|
|
||
|
|
|
||
|
|
class FreshdeskStatus:
|
||
|
|
async def probe(self, account: FreshdeskAccount | None = None, client=None) -> bool:
|
||
|
|
if account is None or client is None:
|
||
|
|
return False
|
||
|
|
try:
|
||
|
|
if account.mode in (FreshdeskMode.FRESHCHAT, FreshdeskMode.BOTH):
|
||
|
|
me = await client.fc_get_me()
|
||
|
|
if not me.get("id"):
|
||
|
|
return False
|
||
|
|
if account.mode in (FreshdeskMode.FRESHDESK, FreshdeskMode.BOTH):
|
||
|
|
me = await client.fd_get_me()
|
||
|
|
if not me.get("id"):
|
||
|
|
return False
|
||
|
|
return True
|
||
|
|
except Exception:
|
||
|
|
logger.exception("Freshdesk status probe failed")
|
||
|
|
return False
|
||
|
|
|
||
|
|
def build_summary(self, snapshot: object) -> dict:
|
||
|
|
return {
|
||
|
|
"freshchat_account": getattr(snapshot, "freshchat_account_name", ""),
|
||
|
|
"freshdesk_agent": getattr(snapshot, "freshdesk_agent_name", ""),
|
||
|
|
}
|