Files
Link-Log/backend/app/api/links.py
T
2026-08-24 14:30:30 +02:00

35 lines
1.2 KiB
Python

from fastapi import APIRouter, Header, HTTPException, status
from pydantic import BaseModel
from backend.app.services.link_service import create_link, list_public_links
from backend.app.services.plugin_manager import plugin_manager
from backend.app.services.token_service import validate_token
router = APIRouter()
class LinkCreate(BaseModel):
title: str
url: str
comment: str = ''
timestamp: str | None = None
@router.post('/links', status_code=status.HTTP_201_CREATED)
def create_link_endpoint(payload: LinkCreate, authorization: str | None = Header(default=None)):
if not authorization or not authorization.startswith('Bearer '):
raise HTTPException(status_code=401, detail='Missing or invalid Authorization header')
token = authorization.replace('Bearer ', '', 1)
info = validate_token(token)
if info is None:
raise HTTPException(status_code=401, detail='Token expired or invalid')
record = create_link(info['user_id'], payload.title, payload.url, payload.comment, payload.timestamp)
plugin_manager.dispatch({'type': 'link_created', **record})
return record
@router.get('/links')
def list_links():
return list_public_links()