StupidGame's picture
Upload 1941 files
baa8e90
raw
history blame
No virus
2.03 kB
from server import PromptServer
from aiohttp import web
import os
import inspect
import json
import importlib
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
import pysssss
root_directory = os.path.dirname(inspect.getfile(PromptServer))
workflows_directory = os.path.join(root_directory, "pysssss-workflows")
workflows_directory = pysssss.get_config_value(
"workflows.directory", workflows_directory)
NODE_CLASS_MAPPINGS = {}
NODE_DISPLAY_NAME_MAPPINGS = {}
@PromptServer.instance.routes.get("/pysssss/workflows")
async def get_workflows(request):
files = []
for dirpath, directories, file in os.walk(workflows_directory):
for file in file:
if (file.endswith(".json")):
files.append(os.path.relpath(os.path.join(
dirpath, file), workflows_directory))
return web.json_response(list(map(lambda f: os.path.splitext(f)[0].replace("\\", "/"), files)))
@PromptServer.instance.routes.get("/pysssss/workflows/{name:.+}")
async def get_workflow(request):
file = os.path.abspath(os.path.join(
workflows_directory, request.match_info["name"] + ".json"))
if os.path.commonpath([file, workflows_directory]) != workflows_directory:
return web.Response(status=403)
return web.FileResponse(file)
@PromptServer.instance.routes.post("/pysssss/workflows")
async def save_workflow(request):
json_data = await request.json()
file = os.path.abspath(os.path.join(
workflows_directory, json_data["name"] + ".json"))
if os.path.commonpath([file, workflows_directory]) != workflows_directory:
return web.Response(status=403)
if os.path.exists(file) and ("overwrite" not in json_data or json_data["overwrite"] == False):
return web.Response(status=409)
sub_path = os.path.dirname(file)
if not os.path.exists(sub_path):
os.makedirs(sub_path)
with open(file, "w") as f:
f.write(json.dumps(json_data["workflow"]))
return web.Response(status=201)