Skip to content

Commit 9cd9cc0

Browse files
authored
fix(server): correct poor rate limit responses detection (jxmorris12#211)
1 parent 5441b53 commit 9cd9cc0

2 files changed

Lines changed: 7 additions & 6 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/2.0.0/),
3333
### Fixed
3434
- Corrected a bug in `language_tool_python.config_file.LanguageToolConfig` where directory paths were incorrectly rejected by the path validator.
3535
- Fixed a bug in `LanguageTool._start_server_on_free_port` where `_url` was not updated when retrying on a different port, causing all subsequent server requests to target the wrong (original) port.
36+
- Fixed a bug in `LanguageTool._query_server` where `RateLimitError` was only raised when the rate-limit response body was invalid JSON, a valid JSON body with status 426 was silently returned as data instead (for now, the body from LanguageTool for rate-limiting responses is "Upgrade Required", which is not valid JSON, but this may change in the future).
3637

3738
### Removed
3839
- **Breaking:** Removed all functions and classes previously deprecated in v3.3.0:

src/language_tool_python/server.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,6 +1054,12 @@ def _query_server(
10541054
timeout=self._TIMEOUT,
10551055
)
10561056
with response_context as response:
1057+
if response.status_code == _HTTP_STATUS_RATE_LIMIT:
1058+
err = (
1059+
"You have exceeded the rate limit for the free "
1060+
"LanguageTool API. Please try again later."
1061+
)
1062+
raise RateLimitError(err)
10571063
try:
10581064
data: object = response.json()
10591065
except json.decoder.JSONDecodeError as e:
@@ -1063,12 +1069,6 @@ def _query_server(
10631069
e,
10641070
)
10651071
logger.debug("Status code: %s", response.status_code)
1066-
if response.status_code == _HTTP_STATUS_RATE_LIMIT:
1067-
err = (
1068-
"You have exceeded the rate limit for the free "
1069-
"LanguageTool API. Please try again later."
1070-
)
1071-
raise RateLimitError(err) from e
10721072
raise LanguageToolError(
10731073
_decode_response_content(response),
10741074
) from e

0 commit comments

Comments
 (0)