Initial commit: Add curl-to-code-cli project
This commit is contained in:
79
.curl_to_code/generators/php_gen.py
Normal file
79
.curl_to_code/generators/php_gen.py
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
from ..parser.models import ParsedCurl
|
||||||
|
|
||||||
|
|
||||||
|
def generate_php(parsed: ParsedCurl) -> str:
|
||||||
|
"""Generate PHP cURL code from parsed curl command."""
|
||||||
|
lines = [
|
||||||
|
"<?php",
|
||||||
|
"",
|
||||||
|
"function makeRequest() {",
|
||||||
|
f' $url = "{parsed.url}"',
|
||||||
|
"",
|
||||||
|
" $ch = curl_init();",
|
||||||
|
"",
|
||||||
|
]
|
||||||
|
|
||||||
|
headers_list = []
|
||||||
|
for h in parsed.headers:
|
||||||
|
headers_list.append(f'"{h.key}: {h.value}"')
|
||||||
|
|
||||||
|
if parsed.user_agent:
|
||||||
|
headers_list.append(f'"User-Agent: {parsed.user_agent}"')
|
||||||
|
|
||||||
|
if parsed.auth and parsed.auth.username and parsed.auth.password:
|
||||||
|
lines.append(f' $username = "{parsed.auth.username}";')
|
||||||
|
lines.append(f' $password = "{parsed.auth.password}";')
|
||||||
|
lines.append(' curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");')
|
||||||
|
lines.append("")
|
||||||
|
|
||||||
|
if parsed.method.value != "GET":
|
||||||
|
lines.append(f' curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "{parsed.method.value}");')
|
||||||
|
|
||||||
|
if parsed.data:
|
||||||
|
if parsed.data.data_type.value == "json" and parsed.data.json_data:
|
||||||
|
import json
|
||||||
|
json_str = json.dumps(parsed.data.json_data)
|
||||||
|
lines.append(f' $data = \'{json_str}\';')
|
||||||
|
headers_list.append('"Content-Type: application/json"')
|
||||||
|
else:
|
||||||
|
lines.append(f' $data = {repr(parsed.data.content)};')
|
||||||
|
lines.append(" curl_setopt($ch, CURLOPT_POSTFIELDS, $data);")
|
||||||
|
lines.append("")
|
||||||
|
|
||||||
|
if headers_list:
|
||||||
|
lines.append(f" $headers = [{', '.join(headers_list)}];")
|
||||||
|
lines.append(" curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);")
|
||||||
|
lines.append("")
|
||||||
|
|
||||||
|
lines.append(" curl_setopt($ch, CURLOPT_URL, $url);")
|
||||||
|
lines.append(" curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);")
|
||||||
|
lines.append(" curl_setopt($ch, CURLOPT_HEADER, false);")
|
||||||
|
|
||||||
|
if parsed.timeout:
|
||||||
|
lines.append(f" curl_setopt($ch, CURLOPT_TIMEOUT, {parsed.timeout});")
|
||||||
|
|
||||||
|
if parsed.follow_redirects:
|
||||||
|
lines.append(" curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);")
|
||||||
|
|
||||||
|
lines.extend([
|
||||||
|
"",
|
||||||
|
" $response = curl_exec($ch);",
|
||||||
|
" $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);",
|
||||||
|
"",
|
||||||
|
" if (curl_errno($ch)) {",
|
||||||
|
' echo "cURL Error: " . curl_error($ch) . "\\n";',
|
||||||
|
" } elseif ($httpCode >= 400) {",
|
||||||
|
f' echo "HTTP Error: $httpCode\\n";',
|
||||||
|
" } else {",
|
||||||
|
" echo $response . PHP_EOL;",
|
||||||
|
" }",
|
||||||
|
"",
|
||||||
|
" curl_close($ch);",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"makeRequest();",
|
||||||
|
"",
|
||||||
|
"?>",
|
||||||
|
])
|
||||||
|
|
||||||
|
return "\n".join(lines)
|
||||||
Reference in New Issue
Block a user