misc router
This commit is contained in:
parent
1f2b5a9607
commit
a8c5180027
3 changed files with 51 additions and 1 deletions
|
@ -7,7 +7,7 @@ This file: Main API router definition.
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
|
||||||
from ..settings import SETTINGS
|
from ..settings import SETTINGS
|
||||||
from . import aggregate, calendar, image, text, ticker
|
from . import aggregate, calendar, image, misc, text, ticker
|
||||||
|
|
||||||
main_router = APIRouter(prefix=f"/{SETTINGS.api_v1_prefix}")
|
main_router = APIRouter(prefix=f"/{SETTINGS.api_v1_prefix}")
|
||||||
main_router.include_router(text.router)
|
main_router.include_router(text.router)
|
||||||
|
@ -15,6 +15,7 @@ main_router.include_router(ticker.router)
|
||||||
main_router.include_router(image.router)
|
main_router.include_router(image.router)
|
||||||
main_router.include_router(calendar.router)
|
main_router.include_router(calendar.router)
|
||||||
main_router.include_router(aggregate.router)
|
main_router.include_router(aggregate.router)
|
||||||
|
main_router.include_router(misc.router)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"main_router",
|
"main_router",
|
||||||
|
|
45
api/ovdashboard_api/routers/misc.py
Normal file
45
api/ovdashboard_api/routers/misc.py
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
"""
|
||||||
|
Router "misc" provides:
|
||||||
|
|
||||||
|
- getting the project version
|
||||||
|
- getting the device IP
|
||||||
|
"""
|
||||||
|
|
||||||
|
from importlib.metadata import version
|
||||||
|
from logging import getLogger
|
||||||
|
from socket import AF_INET, SOCK_DGRAM, socket
|
||||||
|
|
||||||
|
from fastapi import APIRouter
|
||||||
|
|
||||||
|
from ..settings import SETTINGS
|
||||||
|
|
||||||
|
_logger = getLogger(__name__)
|
||||||
|
|
||||||
|
router = APIRouter(prefix="/misc", tags=["misc"])
|
||||||
|
|
||||||
|
|
||||||
|
@router.on_event("startup")
|
||||||
|
async def start_router() -> None:
|
||||||
|
_logger.debug(f"{router.prefix} router starting.")
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/lanip")
|
||||||
|
async def get_ip() -> str:
|
||||||
|
with socket(
|
||||||
|
family=AF_INET,
|
||||||
|
type=SOCK_DGRAM,
|
||||||
|
) as s:
|
||||||
|
s.settimeout(0)
|
||||||
|
try:
|
||||||
|
s.connect((SETTINGS.ping_address, SETTINGS.ping_port))
|
||||||
|
IP = s.getsockname()[0]
|
||||||
|
|
||||||
|
except Exception:
|
||||||
|
IP = "127.0.0.1"
|
||||||
|
|
||||||
|
return IP
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/version")
|
||||||
|
async def get_version() -> str:
|
||||||
|
return version("ovdashboard-api")
|
|
@ -52,6 +52,10 @@ class Settings(BaseSettings):
|
||||||
cache_seconds: int = 30
|
cache_seconds: int = 30
|
||||||
cache_size: int = 30
|
cache_size: int = 30
|
||||||
|
|
||||||
|
# doesn't even have to be reachable
|
||||||
|
ping_address: str = "10.0.0.0"
|
||||||
|
ping_port: int = 1
|
||||||
|
|
||||||
api_v1_prefix: str = "api/v1"
|
api_v1_prefix: str = "api/v1"
|
||||||
openapi_url: str = "/openapi.json"
|
openapi_url: str = "/openapi.json"
|
||||||
docs_url: Optional[str] = None if production_mode else "/docs"
|
docs_url: Optional[str] = None if production_mode else "/docs"
|
||||||
|
|
Loading…
Reference in a new issue