from flask import Flask, request, jsonify from flask_cors import CORS import traceback from cad_vector_area import calculate_pdf_vector_area app = Flask(__name__) CORS(app) @app.route("/health", methods=["GET"]) def health(): return jsonify({ "success": True, "message": "Python CAD Area service is running" }) @app.route("/calculate", methods=["POST"]) def calculate(): try: if "file" not in request.files: return jsonify({ "success": False, "message": "No PDF file received" }), 400 uploaded_file = request.files["file"] if uploaded_file.filename == "": return jsonify({ "success": False, "message": "Empty filename" }), 400 if not uploaded_file.filename.lower().endswith(".pdf"): return jsonify({ "success": False, "message": "Only PDF files are allowed" }), 400 pdf_bytes = uploaded_file.read() scale_ratio = request.form.get("scale_ratio", "1") try: scale_ratio = float(scale_ratio) if scale_ratio <= 0: scale_ratio = 1.0 except ValueError: scale_ratio = 1.0 result = calculate_pdf_vector_area( pdf_bytes=pdf_bytes, filename=uploaded_file.filename, scale_ratio=scale_ratio ) status_code = 200 if result.get("success") else 422 return jsonify(result), status_code except Exception as e: return jsonify({ "success": False, "message": str(e), "trace": traceback.format_exc() }), 500 if __name__ == "__main__": app.run( host="127.0.0.1", port=5055, debug=True )