added DTO mapping

This commit is contained in:
stone-24tch3r
2024-09-27 23:49:47 +05:00
parent f8a674a639
commit 1b42c7ff14
2 changed files with 48 additions and 12 deletions

View File

@@ -26,7 +26,11 @@ class APIClient:
self, request: CertificateGenerateRequest
) -> CertificateGenerateResult:
response = await self.client.post(
"/certificates/generate", json=request.dict(), params={"preview": False}
"/certificates/generate",
json=request.model_dump(),
params={
"preview": False,
},
)
response.raise_for_status()
return CertificateGenerateResult(**response.json())

View File

@@ -9,14 +9,11 @@ from pydantic import BaseModel
from api_client import APIClient
API_BASE_URL = "http://localhost:5000"
app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")
API_BASE_URL = "http://core-api:8000" # Adjust this to match your core API's URL
async def get_api_client():
client = APIClient(API_BASE_URL)
@@ -26,7 +23,7 @@ async def get_api_client():
await client.close()
class LogFilterData(BaseModel):
class LogFilterTemplateData(BaseModel):
commands_only: bool = False
date_from: Optional[date] = None
date_to: Optional[date] = None
@@ -34,11 +31,34 @@ class LogFilterData(BaseModel):
severity: List[str] = ["INFO", "WARN", "DEBUG", "ERROR"]
class CertificateTemplateData(BaseModel):
id: str
name: str
status: str
actions: List[str]
class LogTemplateData(BaseModel):
entry_id: str
timestamp: str
severity: str
trace_id: str
@app.get("/", response_class=HTMLResponse)
async def read_dashboard(
request: Request, api_client: APIClient = Depends(get_api_client)
):
certificates = await api_client.list_certificates()
certificates = [
CertificateTemplateData(
id=cert.id,
name=cert.name,
status=cert.status,
actions=["renew", "revoke", "download"],
)
for cert in (await api_client.list_certificates())
]
return templates.TemplateResponse(
"dashboard.html.j2", {"request": request, "certificates": certificates}
)
@@ -54,18 +74,30 @@ async def read_logs(
severity: List[str] = Query(["INFO", "WARN", "DEBUG", "ERROR"]),
api_client: APIClient = Depends(get_api_client),
):
filter_data = LogFilterData(
filter_data = LogFilterTemplateData(
commands_only=commands_only,
date_from=date_from if date_from != "" else None,
date_to=date_to if date_to != "" else None,
keywords=keywords,
severity=severity,
)
logs = await api_client.get_logs(
commands_only=filter_data.commands_only, severity=filter_data.severity
)
logs = [
LogTemplateData(
entry_id=str(log.entryId),
timestamp=log.timestamptz.isoformat(),
severity=log.severity.name,
trace_id=str(log.traceId),
)
for log in (
await api_client.get_logs(
commands_only=filter_data.commands_only, severity=filter_data.severity
)
)
]
return templates.TemplateResponse(
"logs.html.j2", {"request": request, "logs": logs, "filter_data": filter_data}
"logs.html.j2",
{"request": request, "logs": logs, "filter_data": filter_data},
)