2023-02-26 16:15:12 +00:00
|
|
|
from os import path
|
|
|
|
|
|
|
|
from flask import Flask, send_from_directory
|
|
|
|
|
|
|
|
from ..worker.pool import DevicePoolExecutor
|
2023-02-26 20:15:30 +00:00
|
|
|
from .context import ServerContext
|
|
|
|
from .utils import wrap_route
|
2023-02-26 16:15:12 +00:00
|
|
|
|
|
|
|
|
2023-04-10 01:33:03 +00:00
|
|
|
def serve_bundle_file(server: ServerContext, filename="index.html"):
|
|
|
|
return send_from_directory(path.join("..", server.bundle_path), filename)
|
2023-02-26 16:15:12 +00:00
|
|
|
|
|
|
|
|
|
|
|
# non-API routes
|
2023-04-10 01:33:03 +00:00
|
|
|
def index(server: ServerContext):
|
|
|
|
return serve_bundle_file(server)
|
2023-02-26 16:15:12 +00:00
|
|
|
|
|
|
|
|
2023-04-10 01:33:03 +00:00
|
|
|
def index_path(server: ServerContext, filename: str):
|
|
|
|
return serve_bundle_file(server, filename)
|
2023-02-26 16:15:12 +00:00
|
|
|
|
|
|
|
|
2023-04-10 01:33:03 +00:00
|
|
|
def output(server: ServerContext, filename: str):
|
2023-02-26 16:15:12 +00:00
|
|
|
return send_from_directory(
|
2023-04-10 01:33:03 +00:00
|
|
|
path.join("..", server.output_path), filename, as_attachment=False
|
2023-02-26 16:15:12 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
2023-02-26 20:15:30 +00:00
|
|
|
def register_static_routes(
|
2023-04-10 01:33:03 +00:00
|
|
|
app: Flask, server: ServerContext, _pool: DevicePoolExecutor
|
2023-02-26 20:15:30 +00:00
|
|
|
):
|
|
|
|
return [
|
2023-04-10 01:33:03 +00:00
|
|
|
app.route("/")(wrap_route(index, server)),
|
|
|
|
app.route("/<path:filename>")(wrap_route(index_path, server)),
|
|
|
|
app.route("/output/<path:filename>")(wrap_route(output, server)),
|
2023-02-26 20:15:30 +00:00
|
|
|
]
|