elemes/routes/compile.py

41 lines
1.2 KiB
Python

"""
Code compilation route.
"""
from flask import Blueprint, request, jsonify
from compiler import compiler_factory
compile_bp = Blueprint('compile', __name__)
@compile_bp.route('/compile', methods=['POST'])
def compile_code():
"""Compile and run code submitted by the user."""
try:
code = None
language = None
if request.content_type and 'application/json' in request.content_type:
try:
json_data = request.get_json(force=True)
if json_data:
code = json_data.get('code', '')
language = json_data.get('language', '')
except Exception:
pass
if not code:
code = request.form.get('code', '')
language = request.form.get('language', '')
if not code:
return jsonify({'success': False, 'output': '', 'error': 'No code provided'})
compiler = compiler_factory.get_compiler(language)
result = compiler.compile_and_run(code)
return jsonify(result)
except Exception as e:
return jsonify({'success': False, 'output': '', 'error': f'An error occurred: {e}'})