36 lines
886 B
Python
36 lines
886 B
Python
from __future__ import annotations
|
|
|
|
import os
|
|
from typing import Any
|
|
|
|
from fastapi import APIRouter, Request
|
|
from fastapi.responses import JSONResponse
|
|
|
|
from app.core.request_id import get_or_create_request_id, set_request_id_header, set_request_id_on_state
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
def _get_env(key: str, default: str) -> str:
|
|
value = os.environ.get(key, default)
|
|
return str(value).strip()
|
|
|
|
|
|
@router.get("/version")
|
|
async def version(request: Request) -> Any:
|
|
rid = get_or_create_request_id(request)
|
|
set_request_id_on_state(request, rid)
|
|
|
|
body = {
|
|
"ok": True,
|
|
"version": _get_env("APP_VERSION", "dev"),
|
|
"build_time": _get_env("APP_BUILD_TIME", ""),
|
|
"git_commit": _get_env("APP_COMMIT", ""),
|
|
"request_id": rid,
|
|
}
|
|
|
|
resp = JSONResponse(status_code=200, content=body)
|
|
set_request_id_header(resp, rid)
|
|
return resp
|
|
|