From 3f4cd2e127f2bdf073d22d37a8868799e613147c Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Thu, 29 Jan 2026 11:34:22 +0000 Subject: [PATCH] Initial commit: Add http-convert project --- src/http_convert/models.py | 50 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/http_convert/models.py diff --git a/src/http_convert/models.py b/src/http_convert/models.py new file mode 100644 index 0000000..7d791e8 --- /dev/null +++ b/src/http_convert/models.py @@ -0,0 +1,50 @@ +from pydantic import BaseModel, Field +from typing import Optional, Dict, Any, List +from enum import Enum + + +class HttpMethod(str, Enum): + GET = "GET" + POST = "POST" + PUT = "PUT" + PATCH = "PATCH" + DELETE = "DELETE" + HEAD = "HEAD" + OPTIONS = "OPTIONS" + + +class HTTPRequest(BaseModel): + method: HttpMethod = HttpMethod.GET + url: str + headers: Dict[str, str] = Field(default_factory=dict) + params: Dict[str, str] = Field(default_factory=dict) + body: Optional[str] = None + body_json: Optional[Dict[str, Any]] = None + + def get_final_url(self) -> str: + if self.params: + param_str = "&".join(f"{k}={v}" for k, v in self.params.items()) + separator = "&" if "?" in self.url else "?" + return f"{self.url}{separator}{param_str}" + return self.url + + +class OutputFormat(str, Enum): + CURL = "curl" + HTTPie = "httpie" + FETCH = "fetch" + AXIOS = "axios" + + +class InputFormat(str, Enum): + CURL = "curl" + HTTPie = "httpie" + FETCH = "fetch" + AXIOS = "axios" + + +class ConversionResult(BaseModel): + original_format: InputFormat + target_format: OutputFormat + original_request: HTTPRequest + converted_code: str