rsnarsna commited on
Commit ·
127f214
1
Parent(s): b4b88b8
enpoint mapping correctly ...
Browse files- backend/main.py +10 -10
backend/main.py
CHANGED
|
@@ -119,7 +119,7 @@ app.mount("/static", StaticFiles(directory=str(BASE_DIR / "static")), name="stat
|
|
| 119 |
templates = Jinja2Templates(directory=str(BASE_DIR / "templates"))
|
| 120 |
|
| 121 |
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
|
| 122 |
-
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="login")
|
| 123 |
|
| 124 |
# --- Helper Functions ---
|
| 125 |
def verify_password(plain_password, hashed_password):
|
|
@@ -132,9 +132,9 @@ def get_user_by_email(db: Session, email: str):
|
|
| 132 |
return db.query(User).filter(User.email == email).first()
|
| 133 |
|
| 134 |
# ==========================================
|
| 135 |
-
# API Endpoints
|
| 136 |
# ==========================================
|
| 137 |
-
@app.post("/signup", response_model=UserResponse, status_code=status.HTTP_201_CREATED)
|
| 138 |
def signup(user: UserCreate, db: Session = Depends(get_db)):
|
| 139 |
db_user = get_user_by_email(db, email=user.email)
|
| 140 |
if db_user:
|
|
@@ -157,7 +157,7 @@ def signup(user: UserCreate, db: Session = Depends(get_db)):
|
|
| 157 |
|
| 158 |
return new_user
|
| 159 |
|
| 160 |
-
@app.post("/login", response_model=Token)
|
| 161 |
def login(form_data: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get_db)):
|
| 162 |
# OAuth2PasswordRequestForm uses 'username' and 'password'
|
| 163 |
# We map 'username' to 'email' in our DB
|
|
@@ -182,7 +182,7 @@ def login(form_data: OAuth2PasswordRequestForm = Depends(), db: Session = Depend
|
|
| 182 |
|
| 183 |
return {"access_token": access_token, "token_type": "bearer"}
|
| 184 |
|
| 185 |
-
@app.get("/users/me", response_model=UserResponse)
|
| 186 |
def read_users_me(token: str = Depends(oauth2_scheme), db: Session = Depends(get_db)):
|
| 187 |
# This is a mock function since we aren't decoding real JWTs yet
|
| 188 |
email = token.replace("fake-jwt-token-for-", "")
|
|
@@ -203,7 +203,7 @@ from fastapi import UploadFile, File as FastAPIFile
|
|
| 203 |
from fastapi.responses import FileResponse
|
| 204 |
import shutil
|
| 205 |
|
| 206 |
-
@app.post("/upload")
|
| 207 |
async def upload_file(
|
| 208 |
file: UploadFile = FastAPIFile(...),
|
| 209 |
token: str = Depends(oauth2_scheme),
|
|
@@ -241,7 +241,7 @@ async def upload_file(
|
|
| 241 |
return {"message": "File uploaded successfully", "file_id": db_file.id, "filename": custom_filename}
|
| 242 |
|
| 243 |
|
| 244 |
-
@app.get("/download/{file_id}")
|
| 245 |
async def download_file(
|
| 246 |
file_id: int,
|
| 247 |
token: str = Depends(oauth2_scheme),
|
|
@@ -276,7 +276,7 @@ class FileMetaResponse(BaseModel):
|
|
| 276 |
from_attributes = True
|
| 277 |
|
| 278 |
|
| 279 |
-
@app.get("/files", response_model=List[FileMetaResponse])
|
| 280 |
async def list_files(
|
| 281 |
token: str = Depends(oauth2_scheme),
|
| 282 |
db: Session = Depends(get_db)
|
|
@@ -291,7 +291,7 @@ async def list_files(
|
|
| 291 |
return files
|
| 292 |
|
| 293 |
|
| 294 |
-
@app.put("/files/{file_id}")
|
| 295 |
async def update_file(
|
| 296 |
file_id: int,
|
| 297 |
file: UploadFile = FastAPIFile(...),
|
|
@@ -333,7 +333,7 @@ async def update_file(
|
|
| 333 |
return {"message": "File updated successfully", "file_id": file_record.id, "filename": custom_filename}
|
| 334 |
|
| 335 |
|
| 336 |
-
@app.delete("/files/{file_id}")
|
| 337 |
async def delete_file(
|
| 338 |
file_id: int,
|
| 339 |
token: str = Depends(oauth2_scheme),
|
|
|
|
| 119 |
templates = Jinja2Templates(directory=str(BASE_DIR / "templates"))
|
| 120 |
|
| 121 |
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
|
| 122 |
+
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="api/login")
|
| 123 |
|
| 124 |
# --- Helper Functions ---
|
| 125 |
def verify_password(plain_password, hashed_password):
|
|
|
|
| 132 |
return db.query(User).filter(User.email == email).first()
|
| 133 |
|
| 134 |
# ==========================================
|
| 135 |
+
# JSON API Endpoints (prefixed with /api/)
|
| 136 |
# ==========================================
|
| 137 |
+
@app.post("/api/signup", response_model=UserResponse, status_code=status.HTTP_201_CREATED)
|
| 138 |
def signup(user: UserCreate, db: Session = Depends(get_db)):
|
| 139 |
db_user = get_user_by_email(db, email=user.email)
|
| 140 |
if db_user:
|
|
|
|
| 157 |
|
| 158 |
return new_user
|
| 159 |
|
| 160 |
+
@app.post("/api/login", response_model=Token)
|
| 161 |
def login(form_data: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get_db)):
|
| 162 |
# OAuth2PasswordRequestForm uses 'username' and 'password'
|
| 163 |
# We map 'username' to 'email' in our DB
|
|
|
|
| 182 |
|
| 183 |
return {"access_token": access_token, "token_type": "bearer"}
|
| 184 |
|
| 185 |
+
@app.get("/api/users/me", response_model=UserResponse)
|
| 186 |
def read_users_me(token: str = Depends(oauth2_scheme), db: Session = Depends(get_db)):
|
| 187 |
# This is a mock function since we aren't decoding real JWTs yet
|
| 188 |
email = token.replace("fake-jwt-token-for-", "")
|
|
|
|
| 203 |
from fastapi.responses import FileResponse
|
| 204 |
import shutil
|
| 205 |
|
| 206 |
+
@app.post("/api/upload")
|
| 207 |
async def upload_file(
|
| 208 |
file: UploadFile = FastAPIFile(...),
|
| 209 |
token: str = Depends(oauth2_scheme),
|
|
|
|
| 241 |
return {"message": "File uploaded successfully", "file_id": db_file.id, "filename": custom_filename}
|
| 242 |
|
| 243 |
|
| 244 |
+
@app.get("/api/download/{file_id}")
|
| 245 |
async def download_file(
|
| 246 |
file_id: int,
|
| 247 |
token: str = Depends(oauth2_scheme),
|
|
|
|
| 276 |
from_attributes = True
|
| 277 |
|
| 278 |
|
| 279 |
+
@app.get("/api/files", response_model=List[FileMetaResponse])
|
| 280 |
async def list_files(
|
| 281 |
token: str = Depends(oauth2_scheme),
|
| 282 |
db: Session = Depends(get_db)
|
|
|
|
| 291 |
return files
|
| 292 |
|
| 293 |
|
| 294 |
+
@app.put("/api/files/{file_id}")
|
| 295 |
async def update_file(
|
| 296 |
file_id: int,
|
| 297 |
file: UploadFile = FastAPIFile(...),
|
|
|
|
| 333 |
return {"message": "File updated successfully", "file_id": file_record.id, "filename": custom_filename}
|
| 334 |
|
| 335 |
|
| 336 |
+
@app.delete("/api/files/{file_id}")
|
| 337 |
async def delete_file(
|
| 338 |
file_id: int,
|
| 339 |
token: str = Depends(oauth2_scheme),
|