backup
This commit is contained in:
parent
7b933b6cdb
commit
e48cb29131
@ -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)
|
|
||||||
]
|
|
||||||
@ -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"}
|
|
||||||
@ -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,
|
|
||||||
)
|
|
||||||
@ -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="/")
|
|
||||||
@ -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",
|
|
||||||
}
|
|
||||||
@ -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)
|
|
||||||
]
|
|
||||||
@ -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"}
|
|
||||||
@ -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,
|
|
||||||
}
|
|
||||||
@ -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": "/"}
|
|
||||||
@ -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"}
|
|
||||||
@ -319,11 +319,6 @@ except Exception:
|
|||||||
# In test environments or minimal setups, middleware may be skipped
|
# In test environments or minimal setups, middleware may be skipped
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Add custom middleware - temporarily disabled
|
|
||||||
# app.add_middleware(EnhancedLoggingMiddleware)
|
|
||||||
# app.add_middleware(AuthMiddleware)
|
|
||||||
# app.add_middleware(ValidationMiddleware)
|
|
||||||
|
|
||||||
# Add global exception handler
|
# Add global exception handler
|
||||||
app.add_exception_handler(Exception, global_exception_handler)
|
app.add_exception_handler(Exception, global_exception_handler)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user