fix(scrapers): fix Kattis and USACO login and submit (#330)
## Problem Kattis and USACO login and submit were broken in multiple ways discovered during manual end-to-end testing. Neither platform could successfully authenticate or submit through the plugin. ## Solution **Kattis:** switch login from `POST /login/email` (requires CSRF fetch) to `POST /login` with `script=true` (200 = success, 403 = bad credentials); remove `_check_kattis_login` entirely since Kattis blocks all GET requests from httpx; add submit retry on `"Request validation failed"` to handle expired sessions; fix language ID `"C++17"` → `"C++"`. **USACO:** fix login field `user` → `uname`; fix success check to `code==1`; fix submit endpoint to `submit-solution.php`, file field to `sourcefile`, hidden field extraction off-by-one (`group(2)` → `group(1)`); fix `_pick_lang_option` loop order (keywords outer, options inner) so specific keywords like `"c++17"` match before broad ones like `"c++"`. **`submit.lua`:** absolutize source file path via `fnamemodify(..., ':p')` before passing to the scraper — Python is spawned with `cwd=plugin_path` so relative paths silently fail with `FileNotFoundError`. **Both platforms:** remove cookie fast path from `login` subcommand so credentials are always validated, preventing stale cookies from masking wrong credentials.
This commit is contained in:
parent
543480a4fe
commit
b6d3df03e3
4 changed files with 42 additions and 53 deletions
|
|
@ -54,6 +54,7 @@ function M.submit(opts)
|
|||
logger.log('Source file not found', { level = vim.log.levels.ERROR })
|
||||
return
|
||||
end
|
||||
source_file = vim.fn.fnamemodify(source_file, ':p')
|
||||
|
||||
prompt_credentials(platform, function(creds)
|
||||
vim.cmd.update()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue