From bee848f499827aa6ab58f62341f9d1a8d584c8a8 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Fri, 30 Jan 2026 12:39:24 +0000 Subject: [PATCH] Initial commit: Add curl-to-code-cli project --- .curl_to_code/generators/python_gen.py | 58 ++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .curl_to_code/generators/python_gen.py diff --git a/.curl_to_code/generators/python_gen.py b/.curl_to_code/generators/python_gen.py new file mode 100644 index 0000000..809851b --- /dev/null +++ b/.curl_to_code/generators/python_gen.py @@ -0,0 +1,58 @@ +from ..parser.models import ParsedCurl + + +def generate_python(parsed: ParsedCurl) -> str: + """Generate Python requests code from parsed curl command.""" + lines = [ + "import requests", + "from requests.auth import HTTPBasicAuth", + "import json", + "", + "", + "def make_request():", + f' url = "{parsed.url}"', + "", + ] + + if parsed.auth and parsed.auth.username and parsed.auth.password: + lines.append(f' auth = HTTPBasicAuth("{parsed.auth.username}", "{parsed.auth.password}")') + else: + lines.append(" auth = None") + + headers_dict = {h.key: h.value for h in parsed.headers} + if parsed.user_agent: + headers_dict["User-Agent"] = parsed.user_agent + + lines.append(f" headers = {headers_dict}") + lines.append("") + + method_name = parsed.method.value.lower() + if parsed.data: + if parsed.data.data_type.value == "json": + lines.append(f" json_data = {parsed.data.json_data}") + lines.append(f" response = requests.{method_name}(url, json=json_data, headers=headers, auth=auth)") + else: + lines.append(f" data = {repr(parsed.data.content)}") + lines.append(f" response = requests.{method_name}(url, data=data, headers=headers, auth=auth)") + else: + lines.append(f" response = requests.{method_name}(url, headers=headers, auth=auth)") + + if parsed.timeout: + lines[-1] = lines[-1][:-1] + f", timeout={parsed.timeout})") + + lines.extend([ + "", + " try:", + " response.raise_for_status()", + " print(response.json())", + " except requests.exceptions.RequestException as e:", + ' print(f"Error: {e}")', + " except ValueError as e:", + ' print(f"JSON decode error: {e}")', + "", + "", + "if __name__ == \"__main__\":", + " make_request()", + ]) + + return "\n".join(lines)