Compare commits

4 Commits

Author SHA1 Message Date
MyAgent 24c237fe2a Clean up directory structure and remove redundant files 2026-05-23 02:01:05 +00:00
MyAgent 91e78f40fc remove unnecessary main.py.bak 2026-05-22 06:48:06 +00:00
MyAgent 65caa1e9b5 Correctly overwrite API auth files 2026-05-22 06:43:06 +00:00
MyAgent 89e2fe3630 Implement API key authentication 2026-05-22 06:09:42 +00:00
3 changed files with 44 additions and 11 deletions
+17
View File
@@ -0,0 +1,17 @@
from sqlalchemy import create_engine, Column, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import datetime
SQLALCHEMY_DATABASE_URL = 'sqlite:///./test.db'
engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={'check_same_thread': False})
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
class APIKey(Base):
__tablename__ = 'api_keys'
key = Column(String, primary_key=True, index=True)
expires_at = Column(DateTime)
Base.metadata.create_all(bind=engine)
-7
View File
@@ -1,7 +0,0 @@
from fastapi import FastAPI
app = FastAPI()
@app.get('/')
def read_root():
return {'Hello': 'World'}
+27 -4
View File
@@ -1,7 +1,30 @@
from fastapi import FastAPI
from fastapi import FastAPI, Header, HTTPException, Depends
from sqlalchemy.orm import Session
import datetime
import uuid
from database import SessionLocal, APIKey
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.get('/get-api-key')
def get_api_key(db: Session = Depends(get_db)):
new_key = str(uuid.uuid4())
expires_at = datetime.datetime.utcnow() + datetime.timedelta(hours=24)
db_key = APIKey(key=new_key, expires_at=expires_at)
db.add(db_key)
db.commit()
return {'api_key': new_key, 'expires_at': expires_at}
@app.get('/hello')
def read_hello(x_api_key: str = Header(...), db: Session = Depends(get_db)):
db_key = db.query(APIKey).filter(APIKey.key == x_api_key).first()
if not db_key or db_key.expires_at < datetime.datetime.utcnow():
raise HTTPException(status_code=403, detail='Invalid or expired API Key')
return {'message': 'Hello World'}