import os import base64 import uuid from flask import Flask, request, jsonify from pymongo import MongoClient # Import your shared device types from shared import deviceTypes app = Flask(__name__) # --------------------------------------------------------- # Configuration & Setup # --------------------------------------------------------- # Configure MongoDB connection (adjust the URI as needed for your environment) client = MongoClient("mongodb://localhost:27017/") db = client["microwave_network_db"] cooking_collection = db["cooking_parameters"] device_network_collection = db["device_network"] # Ensure the photo storage directory exists when the app starts PHOTO_DIR = "storage/dishPhotos" os.makedirs(PHOTO_DIR, exist_ok=True) # --------------------------------------------------------- # Routes # --------------------------------------------------------- @app.route("/") def hello_world(): return "
Hello, World!
" @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 Photo photo_b64 = data.get("photo") if photo_b64: # Generate a unique filename using UUID to avoid overwriting filename = f"dish_{uuid.uuid4().hex}.jpg" filepath = os.path.join(PHOTO_DIR, filename) try: # Decode the base64 string and save it as a binary file with open(filepath, "wb") as f: f.write(base64.b64decode(photo_b64)) # Replace the giant base64 string in the dictionary with the local file path # so we don't bloat the MongoDB document data["photo"] = filepath except Exception as e: return jsonify({"error": f"Failed to save photo: {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 @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)