ticker router
This commit is contained in:
parent
85327ce0b3
commit
83db799b96
3 changed files with 86 additions and 54 deletions
|
@ -7,10 +7,11 @@ This file: Main API router definition.
|
|||
from fastapi import APIRouter
|
||||
|
||||
from ..settings import SETTINGS
|
||||
from . import aggregate, calendar, image, text
|
||||
from . import aggregate, calendar, image, text, ticker
|
||||
|
||||
main_router = APIRouter(prefix=f"/{SETTINGS.api_v1_prefix}")
|
||||
main_router.include_router(text.router)
|
||||
main_router.include_router(ticker.router)
|
||||
main_router.include_router(image.router)
|
||||
main_router.include_router(calendar.router)
|
||||
main_router.include_router(aggregate.router)
|
||||
|
|
|
@ -16,7 +16,6 @@ from typing import Iterator
|
|||
from fastapi import APIRouter, Depends
|
||||
from markdown import markdown
|
||||
|
||||
from ..config import Config
|
||||
from ..dav_common import webdav_ensure_path
|
||||
from ..dav_file import DavFile
|
||||
from ._common import FileNameLister, PrefixFinder, PrefixUnique
|
||||
|
@ -44,58 +43,6 @@ async def start_router() -> None:
|
|||
webdav_ensure_path(await text_lister.remote_path)
|
||||
|
||||
|
||||
async def get_ticker_lines() -> Iterator[str]:
|
||||
cfg = await Config.get()
|
||||
file_name = await text_unique(cfg.ticker.file_name)
|
||||
|
||||
ticker = await DavFile(
|
||||
f"{await text_lister.remote_path}/{file_name}",
|
||||
).as_string
|
||||
|
||||
return (
|
||||
line.strip()
|
||||
for line in ticker.split("\n")
|
||||
if line.strip()
|
||||
)
|
||||
|
||||
|
||||
async def get_ticker_content_lines(
|
||||
ticker_lines: Iterator[str] = Depends(get_ticker_lines),
|
||||
) -> Iterator[str]:
|
||||
cfg = await Config.get()
|
||||
|
||||
return (
|
||||
line
|
||||
for line in ticker_lines
|
||||
if not line.startswith(cfg.ticker.comment_marker)
|
||||
)
|
||||
|
||||
|
||||
async def get_ticker_content(
|
||||
ticker_content_lines: Iterator[str] = Depends(get_ticker_content_lines),
|
||||
) -> str:
|
||||
cfg = await Config.get()
|
||||
ticker_content = cfg.ticker.separator.join(
|
||||
["", *ticker_content_lines, ""],
|
||||
)
|
||||
|
||||
return ticker_content.strip()
|
||||
|
||||
|
||||
@ router.get("/get/html/ticker")
|
||||
async def get_ticker(
|
||||
ticker_content: str = Depends(get_ticker_content),
|
||||
) -> str:
|
||||
return markdown(ticker_content)
|
||||
|
||||
|
||||
@ router.get("/get/raw/ticker")
|
||||
async def get_raw_ticker(
|
||||
ticker_content: str = Depends(get_ticker_content),
|
||||
) -> str:
|
||||
return ticker_content
|
||||
|
||||
|
||||
@router.get(
|
||||
"/list",
|
||||
response_model=list[str],
|
||||
|
|
84
api/ovdashboard_api/routers/ticker.py
Normal file
84
api/ovdashboard_api/routers/ticker.py
Normal file
|
@ -0,0 +1,84 @@
|
|||
"""
|
||||
Router "text" provides:
|
||||
|
||||
- listing text files
|
||||
- finding text files by name prefix
|
||||
- getting text file raw content by name prefix
|
||||
- getting text file HTML content by name prefix (using Markdown)
|
||||
- getting the "ticker" raw content
|
||||
- getting the "ticker" HTML content (using Markdown)
|
||||
"""
|
||||
|
||||
from logging import getLogger
|
||||
from typing import Iterator
|
||||
|
||||
from fastapi import APIRouter, Depends
|
||||
from markdown import markdown
|
||||
|
||||
from ..config import Config
|
||||
from ..dav_common import webdav_ensure_path
|
||||
from ..dav_file import DavFile
|
||||
from .text import text_lister, text_unique
|
||||
|
||||
_logger = getLogger(__name__)
|
||||
|
||||
router = APIRouter(prefix="/ticker", tags=["text"])
|
||||
|
||||
|
||||
@router.on_event("startup")
|
||||
async def start_router() -> None:
|
||||
_logger.debug(f"{router.prefix} router starting.")
|
||||
|
||||
webdav_ensure_path(await text_lister.remote_path)
|
||||
|
||||
|
||||
async def get_ticker_lines() -> Iterator[str]:
|
||||
cfg = await Config.get()
|
||||
file_name = await text_unique(cfg.ticker.file_name)
|
||||
|
||||
ticker = await DavFile(
|
||||
f"{await text_lister.remote_path}/{file_name}",
|
||||
).as_string
|
||||
|
||||
return (
|
||||
line.strip()
|
||||
for line in ticker.split("\n")
|
||||
if line.strip()
|
||||
)
|
||||
|
||||
|
||||
async def get_ticker_content_lines(
|
||||
ticker_lines: Iterator[str] = Depends(get_ticker_lines),
|
||||
) -> Iterator[str]:
|
||||
cfg = await Config.get()
|
||||
|
||||
return (
|
||||
line
|
||||
for line in ticker_lines
|
||||
if not line.startswith(cfg.ticker.comment_marker)
|
||||
)
|
||||
|
||||
|
||||
async def get_ticker_content(
|
||||
ticker_content_lines: Iterator[str] = Depends(get_ticker_content_lines),
|
||||
) -> str:
|
||||
cfg = await Config.get()
|
||||
ticker_content = cfg.ticker.separator.join(
|
||||
["", *ticker_content_lines, ""],
|
||||
)
|
||||
|
||||
return ticker_content.strip()
|
||||
|
||||
|
||||
@ router.get("/get/html")
|
||||
async def get_ticker(
|
||||
ticker_content: str = Depends(get_ticker_content),
|
||||
) -> str:
|
||||
return markdown(ticker_content)
|
||||
|
||||
|
||||
@ router.get("/get/raw")
|
||||
async def get_raw_ticker(
|
||||
ticker_content: str = Depends(get_ticker_content),
|
||||
) -> str:
|
||||
return ticker_content
|
Loading…
Reference in a new issue