This commit is contained in:
Lukas 2025-10-12 21:15:00 +02:00
parent 7b933b6cdb
commit e48cb29131
11 changed files with 0 additions and 284 deletions

View File

@ -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)
]

View File

@ -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"}

View File

@ -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,
)

View File

@ -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="/")

View File

@ -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",
}

View File

@ -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)
]

View File

@ -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"}

View File

@ -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,
}

View File

@ -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": "/"}

View File

@ -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"}

View File

@ -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)