61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
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)
|