Return token status for external syncers using the plugin connection token.
(request: Optional[dict] = None, authorization: Optional[str] = Header(None))
| 2440 | |
| 2441 | @router.post("/api/plugin/check-tokens") |
| 2442 | async def plugin_check_tokens(request: Optional[dict] = None, authorization: Optional[str] = Header(None)): |
| 2443 | """Return token status for external syncers using the plugin connection token.""" |
| 2444 | await _verify_plugin_connection_token(authorization) |
| 2445 | |
| 2446 | request = request or {} |
| 2447 | requested_emails = request.get("emails") if isinstance(request, dict) else None |
| 2448 | email_filter = set() |
| 2449 | if isinstance(requested_emails, list): |
| 2450 | email_filter = { |
| 2451 | str(email or "").strip().lower() |
| 2452 | for email in requested_emails |
| 2453 | if str(email or "").strip() |
| 2454 | } |
| 2455 | |
| 2456 | rows = await db.get_all_tokens_with_stats() |
| 2457 | tokens = [] |
| 2458 | for row in rows: |
| 2459 | email = str(row.get("email") or "").strip() |
| 2460 | if email_filter and email.lower() not in email_filter: |
| 2461 | continue |
| 2462 | token_obj = None |
| 2463 | try: |
| 2464 | token_obj = Token(**row) |
| 2465 | except Exception: |
| 2466 | token_obj = None |
| 2467 | needs_refresh = token_manager.needs_at_refresh(token_obj) if token_obj else True |
| 2468 | tokens.append({ |
| 2469 | "id": row.get("id"), |
| 2470 | "email": email, |
| 2471 | "is_active": bool(row.get("is_active")), |
| 2472 | "needs_refresh": needs_refresh, |
| 2473 | "at_expires": row.get("at_expires").isoformat() if hasattr(row.get("at_expires"), "isoformat") else row.get("at_expires"), |
| 2474 | "last_used_at": row.get("last_used_at").isoformat() if hasattr(row.get("last_used_at"), "isoformat") else row.get("last_used_at"), |
| 2475 | "protocol_mode": row.get("protocol_mode") or "session", |
| 2476 | "auto_refresh_enabled": bool(row.get("auto_refresh_enabled", True)), |
| 2477 | "refresh_interval_minutes": row.get("refresh_interval_minutes") or 120, |
| 2478 | "last_st_refresh_at": ( |
| 2479 | row.get("last_st_refresh_at").isoformat() |
| 2480 | if hasattr(row.get("last_st_refresh_at"), "isoformat") |
| 2481 | else row.get("last_st_refresh_at") |
| 2482 | ), |
| 2483 | "last_st_refresh_result": row.get("last_st_refresh_result") or "", |
| 2484 | "credits": row.get("credits", 0), |
| 2485 | }) |
| 2486 | |
| 2487 | return {"success": True, "tokens": tokens} |
nothing calls this directly
no test coverage detected