cp.nvim/scrapers
Barrett Ruth cc48c901c0
fix(scrapers): harden CSES and CF submit edge cases (#295)
Problem: CSES `_web_login` did bare dict indexing on the API response,
causing an opaque `KeyError` if fields were absent. `_check_token`
swallowed all exceptions as `False`, treating transient network errors
as invalid tokens. CF wrote cookies unconditionally (login and submit),
and swallowed `_solve_turnstile` failures in `submit_action`.

Solution: Replace direct indexing with `.get()` + `RuntimeError` for
missing CSES API fields. Re-raise `httpx` network/timeout exceptions
from `_check_token`. Guard CF cookie writes behind an `X-User-Handle`
check (the CF auth cookie). Propagate `_solve_turnstile` errors so
failures surface rather than silently proceeding.
2026-03-05 18:58:27 -05:00
..
__init__.py lol 2025-09-24 21:23:06 -04:00
atcoder.py feat: validate credentials on :CP <platform> login (#310) 2026-03-05 15:12:09 -05:00
base.py feat: validate credentials on :CP <platform> login (#310) 2026-03-05 15:12:09 -05:00
codechef.py feat: validate credentials on :CP <platform> login (#310) 2026-03-05 15:12:09 -05:00
codeforces.py fix(scrapers): harden CSES and CF submit edge cases (#295) 2026-03-05 18:58:27 -05:00
cses.py fix(scrapers): harden CSES and CF submit edge cases (#295) 2026-03-05 18:58:27 -05:00
kattis.py feat: validate credentials on :CP <platform> login (#310) 2026-03-05 15:12:09 -05:00
language_ids.py feat(atcoder): extract submit helpers; add live status notifications (#294) 2026-03-04 19:27:29 -05:00
models.py feat: validate credentials on :CP <platform> login (#310) 2026-03-05 15:12:09 -05:00
timeouts.py fix(submit): use file path over stdin; fix CF CodeMirror textarea (#305) 2026-03-05 14:34:14 -05:00
usaco.py feat: validate credentials on :CP <platform> login (#310) 2026-03-05 15:12:09 -05:00