diff --git a/src/backend/base/langflow/base/curl/parse.py b/src/backend/base/langflow/base/curl/parse.py index 4a5ccaf94..a67ba496e 100644 --- a/src/backend/base/langflow/base/curl/parse.py +++ b/src/backend/base/langflow/base/curl/parse.py @@ -122,24 +122,29 @@ def parse_curl_command(curl_command): def parse_context(curl_command): method = "get" - if not curl_command: + if not curl_command or not curl_command.strip(): return ParsedContext( 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) - 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: method = "post" - if parsed_args.method: + # Prioritize explicit method from -X flag + if getattr(parsed_args, "method", None): method = parsed_args.method.lower() cookie_dict = 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(":"): occurrence = [m.start() for m in re.finditer(r":", curl_header)] header_key, header_value = curl_header[: occurrence[1]], curl_header[occurrence[1] + 1 :] @@ -153,20 +158,19 @@ def parse_context(curl_command): else: quoted_headers[header_key] = header_value.strip() - # add auth - user = parsed_args.user - if parsed_args.user: + # Add auth + user = getattr(parsed_args, "user", None) + if user: user = tuple(user.split(":")) - # add proxy and its authentication if it's available. - proxies = parsed_args.proxy - # proxy_auth = parsed_args.proxy_user - if parsed_args.proxy and parsed_args.proxy_user: + # Add proxy and its authentication if available + proxies = getattr(parsed_args, "proxy", None) + if proxies and getattr(parsed_args, "proxy_user", None): proxies = { "http": 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 = { "http": f"http://{parsed_args.proxy}/", "https": f"http://{parsed_args.proxy}/", @@ -174,11 +178,11 @@ def parse_context(curl_command): return ParsedContext( method=method, - url=parsed_args.url, + url=getattr(parsed_args, "url", ""), # Default to empty string if URL is missing data=post_data, headers=quoted_headers, cookies=cookie_dict, - verify=parsed_args.insecure, + verify=getattr(parsed_args, "insecure", True), # Default to True if missing auth=user, proxy=proxies, )