plants/tmp/build/main.py

39 lines
1010 B
Python

from pathlib import Path
from typing import Annotated
from datetime import datetime
import csv
from fastapi import FastAPI, HTTPException, Header, Depends
from pydantic_settings import BaseSettings
from pydantic import BaseModel
from starlette.status import HTTP_401_UNAUTHORIZED
class Settings(BaseSettings):
token: str
log_file: Path = Path("out") / "log.csv"
SETTINGS = Settings() # pyright: ignore[reportCallIssue]
def valid_token(authorization: Annotated[str, Header()]):
if SETTINGS.token not in authorization:
raise HTTPException(HTTP_401_UNAUTHORIZED)
app = FastAPI()
@app.get("/")
async def index():
return "works"
class Log(BaseModel):
a0: int
a1: int
a2: int
@app.post("/log")
async def post_log(log: Log, _: Annotated[None, Depends(valid_token)]):
now = datetime.now()
with open(SETTINGS.log_file, "a") as f:
w = csv.writer(f)
w.writerow([now, log.a0, log.a1, log.a2]) # pyright: ignore[reportUnknownMemberType]
return "ok"