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

1import os 

2import platform 

3import sys 

4from datetime import UTC, datetime 

5 

6from fastapi import APIRouter, Request 

7from pydantic import BaseModel 

8 

9from zapy.__about__ import __version__ 

10 

11api_server_v1 = APIRouter(tags=["v1"]) 

12 

13 

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 

26 

27 

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 )