from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import FileResponse import os from src.classes import product_classes from src.config import definitions from validators import image_validator from src import data_connection app = FastAPI() origins = [ "http://127.0.0.1:8080" #Will become something like 'shop.yarnecoppens.com' ] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.get("/") def read_root(): return {"Hello": "World"} @app.get("/products", response_model=list[product_classes.Product]) def get_all_products(): return data_connection.get_all_products() @app.get("/products/{barcode}", response_model=product_classes.Product) def get_single_product(barcode: int): return data_connection.get_single_product(barcode) @app.get("/icons/{icon_filename}", response_class=FileResponse) def get_icon(icon_filename: str): full_filepath = os.path.join(definitions.ICONS_PATH, icon_filename) + ".svg" assert os.path.exists(full_filepath), f"File {full_filepath} not found" assert image_validator.is_valid_svg(full_filepath), f"File {full_filepath} is not a valid image" return full_filepath