import os import base64 import uuid from flask import Flask, request, jsonify from pymongo import MongoClient from tools.aichat import generate from shared import deviceTypes app = Flask(__name__) # --------------------------------------------------------- # Configuration & Setup # --------------------------------------------------------- # Configure MongoDB connection (adjust the URI as needed for your environment) MONGO_URI = os.getenv("MONGO_URI", "mongodb://localhost:27017/") client = MongoClient(MONGO_URI) db = client["microwave_network_db"] cooking_collection = db["cooking_parameters"] device_network_collection = db["device_network"] # Ensure the camera image storage directory exists when the app starts CAMERA_IMAGE_DIR = "storage/dishCameraImages" os.makedirs(CAMERA_IMAGE_DIR, exist_ok=True) # --------------------------------------------------------- # Routes # --------------------------------------------------------- @app.route("/") def hello_world(): gen = generate(prompt="Say \"Hello, World!\"") return f"
{gen}
" @app.route("/cooking-params", methods=["POST"]) def cooking_params(): data = request.get_json() if not data: return jsonify({"error": "Invalid or missing JSON payload"}), 400 # 1. Handle the Camera Image camera_image_b64 = data.get("camera_image") if camera_image_b64: # Generate a unique filename using UUID to avoid overwriting filename = f"dish_{uuid.uuid4().hex}.jpg" filepath = os.path.join(CAMERA_IMAGE_DIR, filename) try: # Decode the base64 string and save it as a binary file with open(filepath, "wb") as f: f.write(base64.b64decode(camera_image_b64)) # Replace the giant base64 string in the dictionary with the local file path # so we don't bloat the MongoDB document data["camera_image"] = filepath except Exception as e: return jsonify({"error": f"Failed to save camera image: {str(e)}"}), 500 # 2. Save to MongoDB try: # Insert the dictionary directly into Mongo (it will retain your exact JSON keys) cooking_collection.insert_one(data) # Remove the Mongo-injected '_id' object before returning the response data.pop("_id", None) return jsonify({"message": "Cooking parameters saved successfully", "data": data}), 201 except Exception as e: return jsonify({"error": f"Database error: {str(e)}"}), 500 # 3. Returns with the cooking parameters @app.route("/device-network", methods=["POST"]) def device_network(): data = request.get_json() if not data: return jsonify({"error": "Invalid or missing JSON payload"}), 400 # 2. Save to MongoDB try: # Insert the dictionary directly into Mongo (it will retain your exact JSON keys) device_network_collection.insert_one(data) return "", 200 except Exception as e: return jsonify({"error": f"Database error: {str(e)}"}), 500 if __name__ == "__main__": app.run(debug=True)