This commit is contained in:
2024-08-20 16:54:47 +08:00
parent 96d964361e
commit b6891b7146

View File

@ -17,7 +17,7 @@ def read_binay(io):
def new_map(): def new_map():
return Literal({}) return Literal({})
def set_map(map: dict, key, value): def set_map_value(map: dict, key, value):
map[key] = value map[key] = value
return map return map
@ -50,18 +50,6 @@ class Workflow(Blackbox):
async def processing(self, *args, **kwargs): async def processing(self, *args, **kwargs):
request = args[0] request = args[0]
content_type = request.headers.get("Content-Type")
if re.match(r"application/json", content_type) is not None:
return await self.handler_with_json_mode(request)
elif re.match(r"multipart/form-data", content_type) is not None:
return await self.handler_with_formdata_mode(request)
return Response(content="Invalid content type", status_code=400)
def valid(self, *args, **kwargs) -> bool:
return super().valid(*args, **kwargs)
# json mode 保留 script 字段給 runtime 解析
async def handler_with_json_mode(self,request: Request):
json = await request.json() json = await request.json()
content = None content = None
mdeia_type = None mdeia_type = None
@ -75,7 +63,7 @@ class Workflow(Blackbox):
def add_header(key, value): def add_header(key, value):
nonlocal headers nonlocal headers
headers[key] = value headers[key] = value
script = json["script"] script = request.query_params["script"]
t = Tokenizer() t = Tokenizer()
t.init(script) t.init(script)
runtime = Runtime( runtime = Runtime(
@ -83,7 +71,7 @@ class Workflow(Blackbox):
exteral_fun={ exteral_fun={
"print": print, "print": print,
"new_map": new_map, "new_map": new_map,
"set_map": set_map, "set_map_value": set_map_value,
"get_map_value": get_map_value, "get_map_value": get_map_value,
"set_content": set_content, "set_content": set_content,
"set_media_type": set_media_type, "set_media_type": set_media_type,
@ -96,11 +84,10 @@ class Workflow(Blackbox):
ast = program_parser(t) ast = program_parser(t)
ast.exec(runtime) ast.exec(runtime)
return Response(content=content, media_type=mdeia_type, headers=headers) return Response(content=content, media_type=mdeia_type, headers=headers)
# formdata mode 保留 script 字段給 runtime 解析
async def handler_with_formdata_mode(self,request: Request): def valid(self, *args, **kwargs) -> bool:
json = await request.json() return super().valid(*args, **kwargs)
print("form")
async def fast_api_handler(self, request: Request): async def fast_api_handler(self, request: Request):
return await self.processing(request) return await self.processing(request)