Source code for webspirit.application.server

# server.py
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from typing import List
from fastapi.responses import FileResponse
from pathlib import Path

# Modèle de Bookmark
[docs] class Bookmark(BaseModel): url: str title: str collection: str = "" tags: List[str] = []
app = FastAPI() # Activer CORS pour accepter les requêtes de l'extension et de la page web locale app.add_middleware( CORSMiddleware, allow_origins=["*"], # Autoriser toutes les origines en local allow_methods=["*"], allow_headers=["*"], ) # Stockage en mémoire des bookmarks (liste de dict) bookmarks: List[Bookmark] = []
[docs] @app.post("/api/bookmarks") def add_bookmark(bm: Bookmark): """ Ajoute un nouveau bookmark envoyé depuis l'extension ou l'interface. """ bookmarks.append(bm) return {"message": "Bookmark ajouté avec succès"}
[docs] @app.get("/api/bookmarks") def get_bookmarks(): """ Renvoie la liste de tous les bookmarks sous forme JSON. """ return bookmarks
[docs] @app.get("/") def root(): """ Sert le fichier index.html de l'interface web. """ base = Path(__file__).resolve().parent file_path = base / "frontend" / "index.html" return FileResponse(str(file_path))