# -*- coding: UTF-8 -*- | |
# handle msg between js and python side | |
import json | |
from . import util | |
# action list | |
js_actions = ("open_url", "add_trigger_words", "use_preview_prompt", "dl_model_new_version") | |
py_actions = ("open_url") | |
# handle request from javascript | |
# parameter: msg - msg from js as string in a hidden textbox | |
# return: dict for result | |
def parse_js_msg(msg): | |
util.printD("Start parse js msg") | |
msg_dict = json.loads(msg) | |
# in case client side run JSON.stringify twice | |
if (type(msg_dict) == str): | |
msg_dict = json.loads(msg_dict) | |
if "action" not in msg_dict.keys(): | |
util.printD("Can not find action from js request") | |
return | |
action = msg_dict["action"] | |
if not action: | |
util.printD("Action from js request is None") | |
return | |
if action not in js_actions: | |
util.printD("Unknow action: " + action) | |
return | |
util.printD("End parse js msg") | |
return msg_dict | |
# build python side msg for sending to js | |
# parameter: content dict | |
# return: msg as string, to fill into a hidden textbox | |
def build_py_msg(action:str, content:dict): | |
util.printD("Start build_msg") | |
if not content: | |
util.printD("Content is None") | |
return | |
if not action: | |
util.printD("Action is None") | |
return | |
if action not in py_actions: | |
util.printD("Unknow action: " + action) | |
return | |
msg = { | |
"action" : action, | |
"content": content | |
} | |
util.printD("End build_msg") | |
return json.dumps(msg) |