update create client form
This commit is contained in:
parent
1f33262e90
commit
2cfe7ed8e6
9 changed files with 1856 additions and 1412 deletions
|
|
@ -5,28 +5,27 @@ from urllib.parse import urlparse
|
|||
allowed_hosts = ["api.zippopotam.us"] # Update this list with trusted domains as needed
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def proxy_request(url, method="GET", data=None, headers=None):
|
||||
def request(url, method="GET", data=None, headers=None):
|
||||
"""
|
||||
Generic proxy for external API requests.
|
||||
WARNING: Only allow requests to trusted domains.
|
||||
"""
|
||||
parsed_url = urlparse(url)
|
||||
if parsed_url.hostname not in allowed_hosts:
|
||||
frappe.throw(f"Rquests to {parsed_url.hostname} are not allowed.", frappe.PermissionError)
|
||||
|
||||
frappe.throw(f"Requests to {parsed_url.hostname} are not allowed.", frappe.PermissionError)
|
||||
try:
|
||||
resp = requests.request(
|
||||
method=method.upper(),
|
||||
url=url,
|
||||
json=frappe.parse_json(data) if data else None,
|
||||
headers=frappe.parse_json(headers) if headers else None,
|
||||
timeout=10
|
||||
)
|
||||
resp.raise_for_status()
|
||||
try:
|
||||
resp = requests.request(
|
||||
method=method.upper(),
|
||||
url=url,
|
||||
json=frappe.parse_json(data) if data else None,
|
||||
headers=frappe.parse_json(headers) if headers else None,
|
||||
timeout=10
|
||||
)
|
||||
resp.raise_for_status()
|
||||
try:
|
||||
return resp.json()
|
||||
except ValueError:
|
||||
return {"text": resp.text}
|
||||
except requests.exceptions.RequestException as e:
|
||||
frappe.log_error(message=str(e), title="Proxy Request Failed")
|
||||
frappe.throw("Failed to fetch data from external API.")
|
||||
return resp.json()
|
||||
except ValueError:
|
||||
return {"text": resp.text}
|
||||
except requests.exceptions.RequestException as e:
|
||||
frappe.log_error(message=str(e), title="Proxy Request Failed")
|
||||
frappe.throw("Failed to fetch data from external API.")
|
||||
Loading…
Add table
Add a link
Reference in a new issue