This commit is contained in:
50
src/http_convert/models.py
Normal file
50
src/http_convert/models.py
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user