aboutsummaryrefslogtreecommitdiff
path: root/app/check_api_key.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/check_api_key.py')
-rw-r--r--app/check_api_key.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/app/check_api_key.py b/app/check_api_key.py
new file mode 100644
index 0000000..d8b92f4
--- /dev/null
+++ b/app/check_api_key.py
@@ -0,0 +1,22 @@
+import fastapi
+from fastapi import Security, HTTPException
+from fastapi.security import APIKeyHeader
+import sqlalchemy
+
+from db import engine
+
+"""
+Make sure the provided API key is valid
+"""
+api_key_header = APIKeyHeader(name="X-API-Key")
+
+def check_api_key(api_key_header: str = Security(api_key_header)) -> str:
+ with engine.begin() as conn:
+ response = conn.execute(sqlalchemy.text("SELECT api_key FROM keys WHERE api_key = :api_key"), {'api_key': api_key_header}).fetchone()
+ if response:
+ return response[0]
+ else:
+ raise HTTPException(
+ status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
+ detail="Invalid or missing API key"
+ )