leo: handle non-JSON 200 from Forgejo merge API
Forgejo returns 200 with HTML content-type on successful merge instead of JSON. Our API helper threw on resp.json(), causing merge to report failure even though the PR merged. Now treats non-JSON 200 as success. This was causing PRs #732 and #789 to show as conflict in our DB while actually merged on Forgejo, and tripping the merge circuit breaker. Pentagon-Agent: Leo <294C3CA1-0205-4668-82FA-B984D54F48AD>
This commit is contained in:
parent
615af9b53d
commit
410cf32cfe
1 changed files with 6 additions and 0 deletions
|
|
@ -38,6 +38,12 @@ async def api(method: str, path: str, body: dict = None, token: str = None):
|
|||
return None
|
||||
if resp.status == 204:
|
||||
return {}
|
||||
# Forgejo sometimes returns 200 with HTML (not JSON) on merge success.
|
||||
# Treat 200 with non-JSON content-type as success rather than error.
|
||||
content_type = resp.content_type or ""
|
||||
if "json" not in content_type:
|
||||
logger.debug("Forgejo API %s %s → %d (non-JSON: %s), treating as success", method, path, resp.status, content_type)
|
||||
return {}
|
||||
return await resp.json()
|
||||
except Exception as e:
|
||||
logger.error("Forgejo API error: %s %s → %s", method, path, e)
|
||||
|
|
|
|||
Loading…
Reference in a new issue