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