Coverage for src/zapy/api/v1/api_server.py: 100%
24 statements
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-10 19:35 +0000
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-10 19:35 +0000
1import os
2import platform
3import sys
4from datetime import UTC, datetime
6from fastapi import APIRouter, Request
7from pydantic import BaseModel
9from zapy.__about__ import __version__
11api_server_v1 = APIRouter(tags=["v1"])
14class InfoModel(BaseModel):
15 key: str
16 application: str
17 version: str
18 current_time: datetime
19 start_time: datetime
20 running_time: int
21 is_venv: bool
22 sys_prefix: str
23 python_version: str
24 documentation: str
25 directory: str
28@api_server_v1.get("/info")
29async def server_info(request: Request) -> InfoModel:
30 application_start_time: datetime = request.app.state.application_start_time
31 return InfoModel(
32 key="zapy",
33 application="Zapy",
34 version=__version__,
35 current_time=datetime.now(tz=UTC),
36 start_time=application_start_time,
37 running_time=(datetime.now(tz=UTC) - application_start_time).seconds,
38 is_venv=sys.prefix != sys.base_prefix,
39 sys_prefix=sys.prefix,
40 python_version=platform.python_version(),
41 documentation="https://docs.zapy.dev",
42 directory=os.path.abspath(os.curdir),
43 )