diff --git a/icons/cart.svg b/icons/cart.svg
new file mode 100644
index 0000000..ca0f494
--- /dev/null
+++ b/icons/cart.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/src/data_connection.py b/src/data_connection.py
index 213ba81..b1fa5cd 100644
--- a/src/data_connection.py
+++ b/src/data_connection.py
@@ -1,7 +1,7 @@
from src.classes import product_classes
-pizza = product_classes.Product(name="Pizza", price=3.0, barcode=1000 , image_filename="pizza.svg")
-banana = product_classes.Product(name="Banana", price=1.0, barcode=1001 ,image_filename="banana.svg")
+pizza = product_classes.Product(name="Pizza", price=3.0, barcode=1000 , image_filename="pizza")
+banana = product_classes.Product(name="Banana", price=1.0, barcode=1001 ,image_filename="banana")
product_list = [pizza, banana]
diff --git a/src/main.py b/src/main.py
index 55158f1..1c295ba 100644
--- a/src/main.py
+++ b/src/main.py
@@ -1,9 +1,11 @@
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()
@@ -20,6 +22,7 @@ app.add_middleware(
allow_headers=["*"],
)
+
@app.get("/")
def read_root():
return {"Hello": "World"}
@@ -34,5 +37,8 @@ def get_single_product(barcode: int):
@app.get("/icons/{icon_filename}", response_class=FileResponse)
def get_icon(icon_filename: str):
- full_filepath = f"{definitions.ICONS_PATH}/{icon_filename}"
+ 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
\ No newline at end of file
diff --git a/validators/__init__.py b/validators/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/validators/image_validator.py b/validators/image_validator.py
new file mode 100644
index 0000000..c50c9a1
--- /dev/null
+++ b/validators/image_validator.py
@@ -0,0 +1,23 @@
+import re
+from PIL import Image
+
+def is_valid_image(file_name):
+ try:
+ with Image.open(file_name) as img:
+ img.verify()
+ return True
+ except (IOError, SyntaxError):
+ return False
+
+
+def is_valid_svg(file_name):
+ SVG_R = r'(?:<\?xml\b[^>]*>[^<]*)?(?:[^<]*)*(?: