update
This commit is contained in:
28
app/routers/auth.py
Normal file
28
app/routers/auth.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from fastapi import APIRouter, Request, Depends
|
||||
from fastapi.responses import HTMLResponse, JSONResponse
|
||||
from fastapi.templating import Jinja2Templates
|
||||
from app.services.tidal_wrapper import TidalWrapper
|
||||
|
||||
router = APIRouter(prefix="/auth", tags=["auth"])
|
||||
templates = Jinja2Templates(directory="app/templates")
|
||||
|
||||
@router.get("/login", response_class=HTMLResponse)
|
||||
async def login_page(request: Request):
|
||||
return templates.TemplateResponse("login.html", {"request": request})
|
||||
|
||||
@router.post("/start")
|
||||
async def start_login():
|
||||
wrapper = TidalWrapper()
|
||||
result = wrapper.start_device_login()
|
||||
return JSONResponse(result)
|
||||
|
||||
@router.get("/status")
|
||||
async def check_status():
|
||||
wrapper = TidalWrapper()
|
||||
return JSONResponse(wrapper.get_auth_status())
|
||||
|
||||
@router.post("/logout")
|
||||
async def logout():
|
||||
# wrapper = TidalWrapper()
|
||||
# wrapper.logout()
|
||||
return JSONResponse({"status": "logged_out"})
|
||||
40
app/routers/download.py
Normal file
40
app/routers/download.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from fastapi import APIRouter, Request, HTTPException
|
||||
from fastapi.responses import JSONResponse
|
||||
from app.services.download_manager import DownloadManager
|
||||
|
||||
router = APIRouter(prefix="/download", tags=["download"])
|
||||
download_manager = DownloadManager()
|
||||
|
||||
@router.post("/")
|
||||
async def add_download(request: Request):
|
||||
data = await request.json()
|
||||
item_type = data.get("type")
|
||||
item_id = data.get("id")
|
||||
|
||||
if not item_type or not item_id:
|
||||
raise HTTPException(status_code=400, detail="Missing type or id")
|
||||
|
||||
task = download_manager.add_to_queue(item_type, item_id)
|
||||
return JSONResponse(task)
|
||||
|
||||
@router.get("/queue")
|
||||
async def get_queue():
|
||||
return download_manager.get_queue()
|
||||
|
||||
@router.post("/cancel/{task_id}")
|
||||
async def cancel_download(task_id: str):
|
||||
if download_manager.cancel_task(task_id):
|
||||
return {"status": "success", "message": "Task cancelled"}
|
||||
raise HTTPException(status_code=404, detail="Task not found")
|
||||
|
||||
@router.post("/pause/{task_id}")
|
||||
async def pause_download(task_id: str):
|
||||
if download_manager.pause_task(task_id):
|
||||
return {"status": "success", "message": "Task paused"}
|
||||
raise HTTPException(status_code=404, detail="Task not found")
|
||||
|
||||
@router.post("/resume/{task_id}")
|
||||
async def resume_download(task_id: str):
|
||||
if download_manager.resume_task(task_id):
|
||||
return {"status": "success", "message": "Task resumed"}
|
||||
raise HTTPException(status_code=404, detail="Task not found")
|
||||
14
app/routers/search.py
Normal file
14
app/routers/search.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from fastapi import APIRouter, Request, HTTPException
|
||||
from fastapi.responses import JSONResponse
|
||||
from app.services.tidal_wrapper import TidalWrapper
|
||||
|
||||
router = APIRouter(prefix="/search", tags=["search"])
|
||||
|
||||
@router.get("/")
|
||||
async def search(query: str, type: str = "track"):
|
||||
wrapper = TidalWrapper()
|
||||
try:
|
||||
results = wrapper.search(query, type)
|
||||
return JSONResponse(results)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
17
app/routers/system.py
Normal file
17
app/routers/system.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from fastapi import APIRouter
|
||||
import requests
|
||||
|
||||
router = APIRouter(
|
||||
prefix="/system",
|
||||
tags=["system"],
|
||||
responses={404: {"description": "Not found"}},
|
||||
)
|
||||
|
||||
@router.get("/ip")
|
||||
async def get_public_ip():
|
||||
try:
|
||||
response = requests.get("https://api.ipify.org?format=json", timeout=5)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
except Exception as e:
|
||||
return {"ip": "Error fetching IP", "error": str(e)}
|
||||
Reference in New Issue
Block a user