main
py 33 lines 1.04 KB
Raw
1 from __future__ import annotations
2
3 from helpers.api import ApiHandler, Request
4 from plugins._oauth.helpers.providers import CODEX_PROVIDER_ID, get_provider
5
6
7 class ManualCallback(ApiHandler):
8 async def process(self, input: dict, request: Request) -> dict:
9 raw_provider_id = _provider_id(input)
10 try:
11 return get_provider(raw_provider_id).manual_callback(input, request).to_dict()
12 except Exception as exc:
13 return {
14 "ok": False,
15 "provider_id": _provider_id_label(raw_provider_id),
16 "error": str(exc),
17 }
18
19
20 def _provider_id(input: dict) -> object:
21 if "provider_id" not in input or input.get("provider_id") is None:
22 return CODEX_PROVIDER_ID
23 value = input.get("provider_id")
24 if isinstance(value, str) and not value.strip():
25 return CODEX_PROVIDER_ID
26 return value
27
28
29 def _provider_id_label(value: object) -> str:
30 if value is None:
31 return CODEX_PROVIDER_ID
32 text = str(value).strip()
33 return text or CODEX_PROVIDER_ID