main.py 1.13 KB
Newer Older
Matteo's avatar
Matteo committed
1
2
from fastapi import FastAPI, Response, status

Matteo's avatar
Matteo committed
3
import server.functions as functions
Matteo's avatar
Matteo committed
4

Matteo's avatar
Matteo committed
5
6
info = functions.get_file_content('server/documentation.yaml', 'yaml')
app = FastAPI(**info)
Matteo's avatar
Matteo committed
7
8
9
10


@app.get("/")
def index():
Matteo's avatar
Matteo committed
11
    return {"endpoints": ["irregularityFile1", "irregularityFile2", "description", "docs"]}
Matteo's avatar
Matteo committed
12
13
14
15


@app.get("/description")
async def get_description():
Matteo's avatar
Matteo committed
16
    return info
Matteo's avatar
Matteo committed
17
18


Matteo's avatar
Matteo committed
19
20
@app.get("/irregularityFile/{id}", status_code=200)
def get_irregularity_file(files_name: str, id: int, response: Response, working_path: str | None = None):
Matteo's avatar
Matteo committed
21

Matteo's avatar
Matteo committed
22
23
24
25
    required_file = f'VideoAnalyser_IrregularityFileOutput{id}.json'
    
    try:
        return functions.get_file_content(required_file, 'json')
Matteo's avatar
Matteo committed
26

Matteo's avatar
Matteo committed
27
28
    except:
        process = functions.analyze(files_name, working_path)
Matteo's avatar
Matteo committed
29

Matteo's avatar
Matteo committed
30
31
        if process.returncode == 0:
            return functions.get_file_content(required_file, 'json')
Matteo's avatar
Matteo committed
32

Matteo's avatar
Matteo committed
33
34
35
36
37
38
39
        else:
            response.status_code = status.HTTP_412_PRECONDITION_FAILED
            return {"error": {
                "returncode": process.returncode,
                "stdout": process.stdout.decode("utf-8"),
                "stderr": process.stderr.decode("utf-8"),
            }}