File size: 2,221 Bytes
c118517 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | import sys
from pathlib import Path
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
# ============================================================
# PROJECT PATH
# ============================================================
PROJECT_ROOT = Path(__file__).resolve().parent.parent
sys.path.append(str(PROJECT_ROOT))
# ============================================================
# RIGHTS NAVIGATOR
# ============================================================
from rights_navigator.rights_navigator import get_rights_response
# ============================================================
# FASTAPI
# ============================================================
app = FastAPI(
title="CaseLoop Rights Navigator API"
)
# ============================================================
# CORS
# ============================================================
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# ============================================================
# REQUEST MODEL
# ============================================================
class RightsRequest(BaseModel):
grievance: str
# ============================================================
# HEALTH CHECK
# ============================================================
@app.get("/")
async def root():
return {
"status": "online",
"service": "CaseLoop Rights Navigator",
"endpoint": "/rights"
}
# ============================================================
# RIGHTS NAVIGATOR
# ============================================================
@app.post("/rights")
@app.post("/api/rights")
async def rights_endpoint(request: RightsRequest):
if not request.grievance.strip():
raise HTTPException(
status_code=400,
detail="Grievance cannot be empty."
)
try:
result = get_rights_response(
request.grievance
)
return result
except Exception as e:
raise HTTPException(
status_code=500,
detail=str(e)
) |