diff --git a/src/server/controllers/anime_controller.py b/src/server/controllers/anime_controller.py deleted file mode 100644 index 1bb9898..0000000 --- a/src/server/controllers/anime_controller.py +++ /dev/null @@ -1,70 +0,0 @@ -from typing import Dict, List - -from fastapi import APIRouter, Depends - -from src.server.fastapi_app import AnimeResponse, EpisodeResponse, get_current_user - -router = APIRouter(prefix="/api/anime", tags=["Anime"]) - - -@router.get("/search", response_model=List[AnimeResponse]) -async def search_anime(query: str, limit: int = 20, offset: int = 0, current_user: Dict = Depends(get_current_user)) -> List[AnimeResponse]: - """Search for anime by title (placeholder implementation).""" - # Mirror placeholder logic from fastapi_app - mock_results = [ - AnimeResponse( - id=f"anime_{i}", - title=f"Sample Anime {i}", - description=f"Description for anime {i}", - episodes=24, - status="Completed", - ) - for i in range(offset + 1, min(offset + limit + 1, 100)) - if query.lower() in f"sample anime {i}".lower() - ] - from fastapi import APIRouter - - router = APIRouter(prefix="/api/anime", tags=["Anime"]) - - - @router.get("/search") - async def search_anime(query: str, limit: int = 20, offset: int = 0): - """Search for anime by title (placeholder implementation).""" - results = [] - for i in range(offset + 1, min(offset + limit + 1, 100)): - title = f"Sample Anime {i}" - if query.lower() in title.lower(): - results.append({ - "id": f"anime_{i}", - "title": title, - "description": f"Description for anime {i}", - "episodes": 24, - "status": "Completed", - }) - return results - - - @router.get("/{anime_id}") - async def get_anime(anime_id: str): - return { - "id": anime_id, - "title": f"Anime {anime_id}", - "description": f"Detailed description for anime {anime_id}", - "episodes": 24, - "status": "Completed", - } - - - @router.get("/{anime_id}/episodes") - async def get_anime_episodes(anime_id: str): - return [ - { - "id": f"{anime_id}_ep_{i}", - "anime_id": anime_id, - "episode_number": i, - "title": f"Episode {i}", - "description": f"Description for episode {i}", - "duration": 1440, - } - for i in range(1, 25) - ] diff --git a/src/server/controllers/auth_controller.py b/src/server/controllers/auth_controller.py deleted file mode 100644 index 9c476c0..0000000 --- a/src/server/controllers/auth_controller.py +++ /dev/null @@ -1,39 +0,0 @@ -from typing import Dict - -from fastapi import APIRouter, Depends, HTTPException, status - -from src.config.settings import settings -from src.server.fastapi_app import ( - LoginRequest, - LoginResponse, - TokenVerifyResponse, - generate_jwt_token, - get_current_user, - hash_password, - verify_jwt_token, - verify_master_password, -) - -router = APIRouter(prefix="/api/auth", tags=["Authentication"]) - - -@router.post("/login", response_model=LoginResponse) -async def login(request_data: LoginRequest) -> LoginResponse: - """Authenticate using master password and return JWT token.""" - if not verify_master_password(request_data.password): - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid credentials") - - token_info = generate_jwt_token() - return LoginResponse(success=True, message="Login successful", token=token_info["token"], expires_at=token_info["expires_at"]) - - -@router.get("/verify", response_model=TokenVerifyResponse) -async def verify_token(current_user: Dict = Depends(get_current_user)) -> TokenVerifyResponse: - """Verify provided token and return its payload.""" - return TokenVerifyResponse(valid=True, message="Token valid", user=current_user.get("user"), expires_at=current_user.get("exp")) - - -@router.post("/logout") -async def logout(current_user: Dict = Depends(get_current_user)): - """Stateless logout endpoint (client should drop token).""" - return {"success": True, "message": "Logged out"} diff --git a/src/server/controllers/episode_controller.py b/src/server/controllers/episode_controller.py deleted file mode 100644 index c79ae3f..0000000 --- a/src/server/controllers/episode_controller.py +++ /dev/null @@ -1,19 +0,0 @@ -from typing import Dict - -from fastapi import APIRouter, Depends - -from src.server.fastapi_app import EpisodeResponse, get_current_user - -router = APIRouter(prefix="/api/episodes", tags=["Episodes"]) - - -@router.get("/{episode_id}", response_model=EpisodeResponse) -async def get_episode(episode_id: str, current_user: Dict = Depends(get_current_user)) -> EpisodeResponse: - return EpisodeResponse( - id=episode_id, - anime_id="sample_anime", - episode_number=1, - title=f"Episode {episode_id}", - description=f"Detailed description for episode {episode_id}", - duration=1440, - ) diff --git a/src/server/controllers/setup_controller.py b/src/server/controllers/setup_controller.py deleted file mode 100644 index 5625205..0000000 --- a/src/server/controllers/setup_controller.py +++ /dev/null @@ -1,19 +0,0 @@ -from typing import Dict - -from fastapi import APIRouter - -from src.server.fastapi_app import SetupRequest, SetupResponse, SetupStatusResponse - -router = APIRouter(prefix="/api/auth/setup", tags=["Setup"]) - - -@router.get("/status", response_model=SetupStatusResponse) -async def get_setup_status() -> SetupStatusResponse: - # Placeholder mirror of fastapi_app logic - return SetupStatusResponse(setup_complete=False, requirements={"directory": False}, missing_requirements=["anime_directory"]) - - -@router.post("/", response_model=SetupResponse) -async def process_setup(request_data: SetupRequest) -> SetupResponse: - # Placeholder simple setup processing - return SetupResponse(status="ok", message="Setup processed", redirect_url="/") diff --git a/src/server/controllers/system_controller.py b/src/server/controllers/system_controller.py deleted file mode 100644 index 711e2b0..0000000 --- a/src/server/controllers/system_controller.py +++ /dev/null @@ -1,28 +0,0 @@ -from typing import Any, Dict - -from fastapi import APIRouter, Depends - -from src.config.settings import settings -from src.server.fastapi_app import get_current_user - -router = APIRouter(prefix="/api/system", tags=["System"]) - - -@router.get("/database/health") -async def database_health(current_user: Dict = Depends(get_current_user)) -> Dict[str, Any]: - return { - "status": "healthy", - "connection_pool": "active", - "response_time_ms": 15, - "last_check": "now", - } - - -@router.get("/config") -async def get_system_config(current_user: Dict = Depends(get_current_user)) -> Dict[str, Any]: - return { - "anime_directory": settings.anime_directory, - "log_level": settings.log_level, - "token_expiry_hours": settings.token_expiry_hours, - "version": "1.0.0", - } diff --git a/src/server/controllers/v2/anime_controller.py b/src/server/controllers/v2/anime_controller.py deleted file mode 100644 index 2986d44..0000000 --- a/src/server/controllers/v2/anime_controller.py +++ /dev/null @@ -1,45 +0,0 @@ -from fastapi import APIRouter - -router = APIRouter(prefix="/api/anime", tags=["Anime"]) - - -@router.get("/search") -async def search_anime(query: str, limit: int = 20, offset: int = 0): - results = [] - for i in range(offset + 1, min(offset + limit + 1, 100)): - title = f"Sample Anime {i}" - if query.lower() in title.lower(): - results.append({ - "id": f"anime_{i}", - "title": title, - "description": f"Description for anime {i}", - "episodes": 24, - "status": "Completed", - }) - return results - - -@router.get("/{anime_id}") -async def get_anime(anime_id: str): - return { - "id": anime_id, - "title": f"Anime {anime_id}", - "description": f"Detailed description for anime {anime_id}", - "episodes": 24, - "status": "Completed", - } - - -@router.get("/{anime_id}/episodes") -async def get_anime_episodes(anime_id: str): - return [ - { - "id": f"{anime_id}_ep_{i}", - "anime_id": anime_id, - "episode_number": i, - "title": f"Episode {i}", - "description": f"Description for episode {i}", - "duration": 1440, - } - for i in range(1, 25) - ] diff --git a/src/server/controllers/v2/auth_controller.py b/src/server/controllers/v2/auth_controller.py deleted file mode 100644 index 812a44b..0000000 --- a/src/server/controllers/v2/auth_controller.py +++ /dev/null @@ -1,18 +0,0 @@ -from fastapi import APIRouter - -router = APIRouter(prefix="/api/auth", tags=["Authentication"]) - - -@router.post("/login") -async def login(payload: dict): - return {"success": True, "message": "Login successful", "token": "fake-token", "expires_at": None} - - -@router.get("/verify") -async def verify_token(): - return {"valid": True, "message": "Token valid"} - - -@router.post("/logout") -async def logout(): - return {"success": True, "message": "Logged out"} diff --git a/src/server/controllers/v2/episode_controller.py b/src/server/controllers/v2/episode_controller.py deleted file mode 100644 index 13ece10..0000000 --- a/src/server/controllers/v2/episode_controller.py +++ /dev/null @@ -1,15 +0,0 @@ -from fastapi import APIRouter - -router = APIRouter(prefix="/api/episodes", tags=["Episodes"]) - - -@router.get("/{episode_id}") -async def get_episode(episode_id: str): - return { - "id": episode_id, - "anime_id": "sample_anime", - "episode_number": 1, - "title": f"Episode {episode_id}", - "description": f"Detailed description for episode {episode_id}", - "duration": 1440, - } diff --git a/src/server/controllers/v2/setup_controller.py b/src/server/controllers/v2/setup_controller.py deleted file mode 100644 index 9e6b665..0000000 --- a/src/server/controllers/v2/setup_controller.py +++ /dev/null @@ -1,13 +0,0 @@ -from fastapi import APIRouter - -router = APIRouter(prefix="/api/auth/setup", tags=["Setup"]) - - -@router.get("/status") -async def get_setup_status(): - return {"setup_complete": False, "requirements": {"directory": False}, "missing_requirements": ["anime_directory"]} - - -@router.post("/") -async def process_setup(request_data: dict): - return {"status": "ok", "message": "Setup processed", "redirect_url": "/"} diff --git a/src/server/controllers/v2/system_controller.py b/src/server/controllers/v2/system_controller.py deleted file mode 100644 index a0fd275..0000000 --- a/src/server/controllers/v2/system_controller.py +++ /dev/null @@ -1,13 +0,0 @@ -from fastapi import APIRouter - -router = APIRouter(prefix="/api/system", tags=["System"]) - - -@router.get("/database/health") -async def database_health(): - return {"status": "healthy", "connection_pool": "active", "response_time_ms": 15, "last_check": "now"} - - -@router.get("/config") -async def get_system_config(): - return {"anime_directory": "", "log_level": "INFO", "token_expiry_hours": 24, "version": "1.0.0"} diff --git a/src/server/fastapi_app.py b/src/server/fastapi_app.py index 17449d3..4adcd75 100644 --- a/src/server/fastapi_app.py +++ b/src/server/fastapi_app.py @@ -319,11 +319,6 @@ except Exception: # In test environments or minimal setups, middleware may be skipped pass -# Add custom middleware - temporarily disabled -# app.add_middleware(EnhancedLoggingMiddleware) -# app.add_middleware(AuthMiddleware) -# app.add_middleware(ValidationMiddleware) - # Add global exception handler app.add_exception_handler(Exception, global_exception_handler)