mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
Abri log_job surfaces an OpenHousing rejection as a typed result with verbatim code and message 🟩
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
e473ea8a4f
commit
e0830169ad
1 changed files with 17 additions and 1 deletions
|
|
@ -2,7 +2,12 @@ import xml.etree.ElementTree as ET
|
|||
|
||||
import requests
|
||||
|
||||
from domain.abri.models import JobLogged, LogJobRequest, LogJobResult
|
||||
from domain.abri.models import (
|
||||
AbriRequestRejected,
|
||||
JobLogged,
|
||||
LogJobRequest,
|
||||
LogJobResult,
|
||||
)
|
||||
from infrastructure.abri.config import AbriConfig
|
||||
from infrastructure.abri.envelope import serialise_relay_request
|
||||
|
||||
|
|
@ -36,6 +41,8 @@ class AbriClient:
|
|||
)
|
||||
response = self._session.post(self._config.endpoint_url, data=body)
|
||||
root = ET.fromstring(response.content)
|
||||
if root.tag == "response":
|
||||
return self._parse_rejection(root)
|
||||
job_logged = root.find("Jobs/Job_logged")
|
||||
if job_logged is None:
|
||||
raise ValueError("Job_logged element missing from relay response")
|
||||
|
|
@ -43,3 +50,12 @@ class AbriClient:
|
|||
job_no=job_logged.attrib["job_no"],
|
||||
logged_info=job_logged.attrib["logged_info"],
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def _parse_rejection(root: ET.Element) -> AbriRequestRejected:
|
||||
success = root.findtext("success")
|
||||
code = root.findtext("code")
|
||||
message = root.findtext("message")
|
||||
if success != "false" or code is None or message is None:
|
||||
raise ValueError("malformed relay failure response")
|
||||
return AbriRequestRejected(code=code, message=message)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue