This repository has been archived on 2024-01-28. You can view files and clone it, but cannot push or open issues/pull-requests.
openscad-http-api/openscad-http-api/__init__.py

25 lines
685 B
Python

from subprocess import run
from flask import Flask, request
from jinja2 import Environment, FileSystemLoader
app = Flask(__name__)
tpl_env = Environment(loader=FileSystemLoader("templates"))
@app.route("/api/render/<name>", methods=["POST"])
def render_template(name):
template = tpl_env.get_template(f"{name}.scad.j2")
parameters = request.get_json()
scad_source = template.render(parameters)
proc = run(
["openscad", "-", "-o", "-", "--hardwarnings", "--export-format", "stl"],
input=scad_source.encode("utf-8"),
capture_output=True,
)
if proc.returncode == 0:
return proc.stdout
else:
return proc.stderr, 500