fix: Properly parse CURL commands for api request (#8592)
* fix: Properly parse CURL commands for api request * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
4d3eae63ac
commit
cb6ec940f1
1 changed files with 18 additions and 14 deletions
|
|
@ -122,24 +122,29 @@ def parse_curl_command(curl_command):
|
||||||
|
|
||||||
def parse_context(curl_command):
|
def parse_context(curl_command):
|
||||||
method = "get"
|
method = "get"
|
||||||
if not curl_command:
|
if not curl_command or not curl_command.strip():
|
||||||
return ParsedContext(
|
return ParsedContext(
|
||||||
method=method, url="", data=None, headers={}, cookies={}, verify=True, auth=None, proxy=None
|
method=method, url="", data=None, headers={}, cookies={}, verify=True, auth=None, proxy=None
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Strip whitespace to handle formatting issues
|
||||||
|
curl_command = curl_command.strip()
|
||||||
parsed_args: ParsedArgs = parse_curl_command(curl_command)
|
parsed_args: ParsedArgs = parse_curl_command(curl_command)
|
||||||
|
|
||||||
post_data = parsed_args.data or parsed_args.data_binary
|
# Safeguard against missing parsed_args attributes
|
||||||
|
post_data = getattr(parsed_args, "data", None) or getattr(parsed_args, "data_binary", None)
|
||||||
if post_data:
|
if post_data:
|
||||||
method = "post"
|
method = "post"
|
||||||
|
|
||||||
if parsed_args.method:
|
# Prioritize explicit method from -X flag
|
||||||
|
if getattr(parsed_args, "method", None):
|
||||||
method = parsed_args.method.lower()
|
method = parsed_args.method.lower()
|
||||||
|
|
||||||
cookie_dict = OrderedDict()
|
cookie_dict = OrderedDict()
|
||||||
quoted_headers = OrderedDict()
|
quoted_headers = OrderedDict()
|
||||||
|
|
||||||
for curl_header in parsed_args.headers:
|
# Process headers safely
|
||||||
|
for curl_header in getattr(parsed_args, "headers", []):
|
||||||
if curl_header.startswith(":"):
|
if curl_header.startswith(":"):
|
||||||
occurrence = [m.start() for m in re.finditer(r":", curl_header)]
|
occurrence = [m.start() for m in re.finditer(r":", curl_header)]
|
||||||
header_key, header_value = curl_header[: occurrence[1]], curl_header[occurrence[1] + 1 :]
|
header_key, header_value = curl_header[: occurrence[1]], curl_header[occurrence[1] + 1 :]
|
||||||
|
|
@ -153,20 +158,19 @@ def parse_context(curl_command):
|
||||||
else:
|
else:
|
||||||
quoted_headers[header_key] = header_value.strip()
|
quoted_headers[header_key] = header_value.strip()
|
||||||
|
|
||||||
# add auth
|
# Add auth
|
||||||
user = parsed_args.user
|
user = getattr(parsed_args, "user", None)
|
||||||
if parsed_args.user:
|
if user:
|
||||||
user = tuple(user.split(":"))
|
user = tuple(user.split(":"))
|
||||||
|
|
||||||
# add proxy and its authentication if it's available.
|
# Add proxy and its authentication if available
|
||||||
proxies = parsed_args.proxy
|
proxies = getattr(parsed_args, "proxy", None)
|
||||||
# proxy_auth = parsed_args.proxy_user
|
if proxies and getattr(parsed_args, "proxy_user", None):
|
||||||
if parsed_args.proxy and parsed_args.proxy_user:
|
|
||||||
proxies = {
|
proxies = {
|
||||||
"http": f"http://{parsed_args.proxy_user}@{parsed_args.proxy}/",
|
"http": f"http://{parsed_args.proxy_user}@{parsed_args.proxy}/",
|
||||||
"https": f"http://{parsed_args.proxy_user}@{parsed_args.proxy}/",
|
"https": f"http://{parsed_args.proxy_user}@{parsed_args.proxy}/",
|
||||||
}
|
}
|
||||||
elif parsed_args.proxy:
|
elif proxies:
|
||||||
proxies = {
|
proxies = {
|
||||||
"http": f"http://{parsed_args.proxy}/",
|
"http": f"http://{parsed_args.proxy}/",
|
||||||
"https": f"http://{parsed_args.proxy}/",
|
"https": f"http://{parsed_args.proxy}/",
|
||||||
|
|
@ -174,11 +178,11 @@ def parse_context(curl_command):
|
||||||
|
|
||||||
return ParsedContext(
|
return ParsedContext(
|
||||||
method=method,
|
method=method,
|
||||||
url=parsed_args.url,
|
url=getattr(parsed_args, "url", ""), # Default to empty string if URL is missing
|
||||||
data=post_data,
|
data=post_data,
|
||||||
headers=quoted_headers,
|
headers=quoted_headers,
|
||||||
cookies=cookie_dict,
|
cookies=cookie_dict,
|
||||||
verify=parsed_args.insecure,
|
verify=getattr(parsed_args, "insecure", True), # Default to True if missing
|
||||||
auth=user,
|
auth=user,
|
||||||
proxy=proxies,
|
proxy=proxies,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue