File size: 1,020 Bytes
360c090
79743a3
5c239ba
79743a3
47ab990
 
9fbb486
79743a3
 
5c239ba
27660a3
5c239ba
47ab990
5c239ba
79743a3
3750ff9
 
24eb369
c6fcf99
79743a3
47ab990
c6fcf99
5c239ba
79743a3
360c090
79743a3
9fbb486
79743a3
4c519fd
79743a3
 
 
5c239ba
 
 
79743a3
360c090
79743a3
5c239ba
 
79743a3
360c090
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 Dict, List, 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