from fastapi import FastAPI,File,UploadFile,HTTPException from tempfile import NamedTemporaryFile from app import generate from app import loadContext from IPython.display import Markdown import os from pydantic import BaseModel import json # Initialize FastAPI app app = FastAPI() # Pydantic model for input validation class CodeSnippet(BaseModel): code: str @app.get("/") async def root(): return {"Code Review Automation": "Version 1.0 'First Draft'"} @app.post("/AutomateReview/") def automate_review(snippet : CodeSnippet): try: print(f"Received snippet: {snippet}") escaped_code = json.dumps(snippet.code) print(escaped_code) result = generate(escaped_code) return {"answer": Markdown(result)} except Exception as e: return {"error": str(e)} @app.post("/loadFile/") def load_file(file: UploadFile = File(...)): try: with NamedTemporaryFile(delete=False) as tmp_file: tmp_file.write(file.file.read()) temp_file_name=tmp_file.name file_content = loadContext(temp_file_name) result = generate(file_content) os.remove(temp_file_name) return {"answer":Markdown(result)} except Exception as e: raise HTTPException(status_code=500,detail=str(e))