31 lines
786 B
Python
31 lines
786 B
Python
from fastapi import APIRouter, HTTPException
|
|
|
|
from server.errors import call
|
|
from server.schemas import SessionBody, device_payload
|
|
from server.services.login import login
|
|
from server.services.profile_poller import profile_poller
|
|
from server.services.sessions import sessions
|
|
|
|
router = APIRouter(prefix="/api")
|
|
|
|
|
|
@router.post("/me")
|
|
def me(body: SessionBody):
|
|
return call(lambda: login.current(body.token, device_payload(body.device)))
|
|
|
|
|
|
@router.get("/profile")
|
|
def profile():
|
|
data = sessions.snapshot()
|
|
if data is None:
|
|
raise HTTPException(status_code=404, detail="未登录")
|
|
return data
|
|
|
|
|
|
@router.post("/logout")
|
|
def logout(body: SessionBody):
|
|
token = body.token.strip()
|
|
profile_poller.stop_if(token)
|
|
sessions.clear(token)
|
|
return {"ok": True}
|