feat: added a twist
This commit is contained in:
@@ -1,28 +1,34 @@
|
||||
"""µFrame compile endpoint — POST /api/compile."""
|
||||
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from pydantic import BaseModel
|
||||
|
||||
import uframe
|
||||
from uframe.errors import UFrameError
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
class ConvertRequest(BaseModel):
|
||||
markdown: str
|
||||
width: int = 80
|
||||
class CompileRequest(BaseModel):
|
||||
source: str
|
||||
width: int = 64
|
||||
|
||||
|
||||
class ConvertResponse(BaseModel):
|
||||
class CompileResponse(BaseModel):
|
||||
ascii: str
|
||||
micron: str
|
||||
warnings: list[str]
|
||||
|
||||
|
||||
@router.post("/convert", response_model=ConvertResponse)
|
||||
async def convert(req: ConvertRequest):
|
||||
@router.post("/compile", response_model=CompileResponse)
|
||||
async def compile_source(req: CompileRequest):
|
||||
"""Compile µFrame .uf source into ASCII and Micron output."""
|
||||
try:
|
||||
from md2txt import convert_markdown
|
||||
|
||||
result = convert_markdown(
|
||||
req.markdown,
|
||||
width=req.width,
|
||||
renderer_name="micron",
|
||||
result = uframe.compile(req.source, width=req.width)
|
||||
return CompileResponse(
|
||||
ascii=result.ascii,
|
||||
micron=result.micron,
|
||||
warnings=[w.message for w in result.warnings],
|
||||
)
|
||||
return ConvertResponse(micron=result)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=f"Conversion failed: {e}")
|
||||
except UFrameError as e:
|
||||
raise HTTPException(status_code=422, detail=str(e))
|
||||
|
||||
Reference in New Issue
Block a user