mirror of
https://github.com/outbackdingo/step-ca-webui.git
synced 2026-01-27 10:20:25 +00:00
added DTO mapping
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -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},
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user