from fastapi import FastAPI, HTTPException from mock_backend.mock_backend import announcement_system from api_models import EndpointGroup from typing import List import uvicorn app = FastAPI() @app.get("/groups", response_model=List[EndpointGroup]) def get_groups(): return announcement_system.get_endpoint_groups() @app.post("/groups", response_model=EndpointGroup) def create_group(group: EndpointGroup): try: return announcement_system.add_endpoint_group(group) except ValueError as e: raise HTTPException(status_code=400, detail=str(e)) @app.put("/groups/{group_id}", response_model=EndpointGroup) def update_group(group_id: int, updated_group: EndpointGroup): try: return announcement_system.update_endpoint_group(group_id, updated_group) except ValueError as e: raise HTTPException(status_code=404, detail=str(e)) @app.delete("/groups/{group_id}") def delete_group(group_id: int): try: announcement_system.delete_endpoint_group(group_id) return {"message": "Group deleted successfully"} except ValueError as e: raise HTTPException(status_code=404, detail=str(e)) @app.post("/announcements") def start_announcement(text: str, group_id: int): group = announcement_system.get_endpoint_group(group_id) if not group: raise HTTPException(status_code=404, detail=f"Group with ID {group_id} not found") try: announcement_system.start_announcement(text, group) return {"message": "Announcement started successfully"} except Exception as e: raise HTTPException(status_code=400, detail=str(e)) @app.get("/announcements/status") def get_announcement_status(): return announcement_system.get_announcement_status() @app.get("/endpoints") def get_available_endpoints(): return announcement_system.get_available_endpoints() @app.get("/languages") def get_available_languages(): return announcement_system.get_available_languages() if __name__ == "__main__": uvicorn.run('mock_backend.mock_api:app', host="0.0.0.0", port=7999, reload=True)