File size: 1,008 Bytes
79743a3
 
5c239ba
79743a3
47ab990
 
9fbb486
79743a3
 
5c239ba
27660a3
5c239ba
47ab990
5c239ba
79743a3
3750ff9
 
24eb369
c6fcf99
79743a3
47ab990
c6fcf99
5c239ba
79743a3
 
 
9fbb486
79743a3
4c519fd
79743a3
 
 
5c239ba
 
 
79743a3
 
 
5c239ba
 
79743a3
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from typing import Union
from time import gmtime, strftime

from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse

from modules.details import Details, rand_details
from modules.dataset import get_image, get_stats

app = FastAPI(docs_url=None, redoc_url=None)

app.mount("/static", StaticFiles(directory="static"), name="static")

card_logs = []


@app.head('/')
@app.get('/')
def index() -> FileResponse:
    return FileResponse(path="static/index.html", media_type="text/html")


@app.get('/new_card')
def new_card() -> dict[str, Union[Details, str]]:
    card_logs.append(strftime('%Y-%m-%dT%H:%M:%SZ', gmtime()))

    details: Details = rand_details()

    return {
        "details": details,
        "image": get_image(details["energy_type"]),
    }


@app.get('/stats')
def stats() -> dict[str, Union[int, object]]:
    return get_stats() | {"cards_served": len(card_logs)}


@app.get('/logs')
def logs() -> list[str]:
    return card_logs