Improve data processing in PageNode class to handle both dictionary and bytes input.
Some checks failed
Docker Build Test / build (3.10) (push) Successful in 11s
Docker Build Test / build (3.12) (push) Successful in 11s
Docker Build Test / build (3.13) (push) Successful in 35s
Docker Build Test / build (3.11) (push) Successful in 37s
Docker Build Test / build (3.9) (push) Successful in 37s
Build and Publish Docker Image / build (push) Has been cancelled
Some checks failed
Docker Build Test / build (3.10) (push) Successful in 11s
Docker Build Test / build (3.12) (push) Successful in 11s
Docker Build Test / build (3.13) (push) Successful in 35s
Docker Build Test / build (3.11) (push) Successful in 37s
Docker Build Test / build (3.9) (push) Successful in 37s
Build and Publish Docker Image / build (push) Has been cancelled
This commit is contained in:
@@ -190,23 +190,39 @@ class PageNode:
|
|||||||
remote_identity.hash,
|
remote_identity.hash,
|
||||||
delimit=False,
|
delimit=False,
|
||||||
)
|
)
|
||||||
if data and isinstance(data, bytes):
|
if data:
|
||||||
try:
|
try:
|
||||||
data_str = data.decode("utf-8")
|
RNS.log(f"Processing request data: {data} (type: {type(data)})", RNS.LOG_DEBUG)
|
||||||
if data_str:
|
if isinstance(data, dict):
|
||||||
if "|" in data_str and "&" not in data_str:
|
RNS.log(f"Data is dictionary with {len(data)} items", RNS.LOG_DEBUG)
|
||||||
pairs = data_str.split("|")
|
for key, value in data.items():
|
||||||
else:
|
if isinstance(value, str):
|
||||||
pairs = data_str.split("&")
|
|
||||||
for pair in pairs:
|
|
||||||
if "=" in pair:
|
|
||||||
key, value = pair.split("=", 1)
|
|
||||||
if key.startswith(("field_", "var_")):
|
if key.startswith(("field_", "var_")):
|
||||||
env[key] = value
|
env[key] = value
|
||||||
|
RNS.log(f"Set env[{key}] = {value}", RNS.LOG_DEBUG)
|
||||||
elif key == "action":
|
elif key == "action":
|
||||||
env["var_action"] = value
|
env["var_action"] = value
|
||||||
|
RNS.log(f"Set env[var_action] = {value}", RNS.LOG_DEBUG)
|
||||||
else:
|
else:
|
||||||
env[f"field_{key}"] = value
|
env[f"field_{key}"] = value
|
||||||
|
RNS.log(f"Set env[field_{key}] = {value}", RNS.LOG_DEBUG)
|
||||||
|
elif isinstance(data, bytes):
|
||||||
|
data_str = data.decode("utf-8")
|
||||||
|
RNS.log(f"Data is bytes, decoded to: {data_str}", RNS.LOG_DEBUG)
|
||||||
|
if data_str:
|
||||||
|
if "|" in data_str and "&" not in data_str:
|
||||||
|
pairs = data_str.split("|")
|
||||||
|
else:
|
||||||
|
pairs = data_str.split("&")
|
||||||
|
for pair in pairs:
|
||||||
|
if "=" in pair:
|
||||||
|
key, value = pair.split("=", 1)
|
||||||
|
if key.startswith(("field_", "var_")):
|
||||||
|
env[key] = value
|
||||||
|
elif key == "action":
|
||||||
|
env["var_action"] = value
|
||||||
|
else:
|
||||||
|
env[f"field_{key}"] = value
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
RNS.log(f"Error parsing request data: {e}", RNS.LOG_ERROR)
|
RNS.log(f"Error parsing request data: {e}", RNS.LOG_ERROR)
|
||||||
result = subprocess.run( # noqa: S603
|
result = subprocess.run( # noqa: S603
|
||||||
|
|||||||
Reference in New Issue
Block a user