from sanic.response import html from lantern.handle import execute_handle from lantern.error import error_response from lantern.request import serialize_request import os def build_main_route(args): handle = os.path.abspath(args.handler) if not os.path.isfile(handle) or not os.access(handle, os.X_OK): raise FileNotFoundError("Can't find handle at {}".format(handle)) async def main_route(request, path=None): result = execute_handle(handle, serialize_request(request)) if result.exit_code != 0: return error_response(result.error) return html(result.html, status=200) return main_route