(status_code: int, content: bytes)
| 1917 | |
| 1918 | |
| 1919 | def _extract_error_details(status_code: int, content: bytes) -> tuple[str, str]: |
| 1920 | fallback_code = f"http_{status_code}" |
| 1921 | fallback_message = f"HTTP {status_code}" |
| 1922 | if not content: |
| 1923 | return fallback_code, fallback_message |
| 1924 | try: |
| 1925 | payload = json.loads(content.decode("utf-8", errors="replace")) |
| 1926 | except Exception: |
| 1927 | text = content.decode("utf-8", errors="replace") |
| 1928 | return fallback_code, _truncate_diagnostic_text(text) |
| 1929 | |
| 1930 | if isinstance(payload, dict): |
| 1931 | error_payload = payload.get("error") |
| 1932 | if isinstance(error_payload, dict): |
| 1933 | code = str(error_payload.get("code") or error_payload.get("type") or "").strip() |
| 1934 | message = str( |
| 1935 | error_payload.get("message") |
| 1936 | or error_payload.get("detail") |
| 1937 | or error_payload.get("error") |
| 1938 | or "" |
| 1939 | ).strip() |
| 1940 | return code or fallback_code, _truncate_diagnostic_text(message or fallback_message) |
| 1941 | |
| 1942 | code = str(payload.get("code") or payload.get("type") or "").strip() |
| 1943 | message = str(payload.get("message") or payload.get("detail") or "").strip() |
| 1944 | if code or message: |
| 1945 | return code or fallback_code, _truncate_diagnostic_text(message or fallback_message) |
| 1946 | |
| 1947 | return fallback_code, _truncate_diagnostic_text(str(payload) or fallback_message) |
| 1948 | |
| 1949 | |
| 1950 | def _spend_error( |
no test coverage detected