fix: only try JSON if content-type says so (#24936)

Keep NoneType as the fallback

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
This commit is contained in:
Akhil Narang 2024-02-19 15:29:22 +05:30 committed by GitHub
parent ec8500ef09
commit 59ca074780
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -6,7 +6,6 @@ import json
from urllib.parse import parse_qs from urllib.parse import parse_qs
import frappe import frappe
from frappe import _
from frappe.utils import get_request_session from frappe.utils import get_request_session
@ -20,14 +19,15 @@ def make_request(method: str, url: str, auth=None, headers=None, data=None, json
response = frappe.flags.integration_request = s.request( response = frappe.flags.integration_request = s.request(
method, url, data=data, auth=auth, headers=headers, json=json, params=params method, url, data=data, auth=auth, headers=headers, json=json, params=params
) )
response.raise_for_status() content_type = response.headers.get("content-type")
if content_type == "text/plain; charset=utf-8":
if response.headers.get("content-type") == "text/plain; charset=utf-8":
return parse_qs(response.text) return parse_qs(response.text)
elif not response.text: elif content_type.startswith("application/") and content_type.split(";")[0].endswith("json"):
return return response.json()
elif response.text:
return response.text
else: else:
response.json() return
except Exception as exc: except Exception as exc:
frappe.log_error() frappe.log_error()
raise exc raise exc