from fastapi import FastAPI, File, UploadFile from fastapi.responses import JSONResponse from fastapi.middleware.cors import CORSMiddleware import io from PIL import Image from preprocessing.image_preprocessing import prep_image from model_predictor import prediction app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) print("Server is running...") @app.get("/") async def root(): return JSONResponse( content={"message": "Welcome to the Food Classification API 🍕🍔🥗! The server is up and running 🚀."} ) @app.post("/predict") async def predict(file: UploadFile = File(...)): try: image = Image.open(io.BytesIO(await file.read())) processed_img = prep_image(image) predictions = prediction(processed_img) return JSONResponse(content={"predictions": predictions}) except Exception as e: return JSONResponse(content={"error": str(e)}, status_code=500) if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=7860)