MCPcopy Create free account
hub / github.com/TheSmallHanCat/flow2api / plugin_check_tokens

Function plugin_check_tokens

src/api/admin.py:2442–2487  ·  view source on GitHub ↗

Return token status for external syncers using the plugin connection token.

(request: Optional[dict] = None, authorization: Optional[str] = Header(None))

Source from the content-addressed store, hash-verified

2440
2441@router.post("/api/plugin/check-tokens")
2442async 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}

Callers

nothing calls this directly

Calls 4

TokenClass · 0.85
needs_at_refreshMethod · 0.80

Tested by

no test coverage detected