Reapply "sunnylink: enhanced param keys fetch with data type" (#1317)

Reapply "sunnylink: enhanced param keys fetch with data type" (#1316)"

This reverts commit 282a8b093d.

Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
This commit is contained in:
DevTekVE
2025-10-08 21:01:33 +02:00
committed by GitHub
parent 517020ffb6
commit e8a39c4a74
2 changed files with 27 additions and 4 deletions

View File

@@ -178,12 +178,29 @@ def getParamsAllKeys() -> list[str]:
return keys return keys
@dispatcher.add_method
def getParamsAllKeysV1() -> dict[str, str]:
available_keys: list[str] = [k.decode('utf-8') for k in Params().all_keys()]
params_dict: dict[str, list[dict[str, str | bool | int | None]]] = {"params": []}
for key in available_keys:
value = get_param_as_byte(key, get_default=True)
params_dict["params"].append({
"key": key,
"type": int(params.get_type(key).value),
"default_value": base64.b64encode(value).decode('utf-8') if value else None,
})
return {"keys": json.dumps(params_dict.get("params", []))}
@dispatcher.add_method @dispatcher.add_method
def getParams(params_keys: list[str], compression: bool = False) -> str | dict[str, str]: def getParams(params_keys: list[str], compression: bool = False) -> str | dict[str, str]:
params = Params() params = Params()
available_keys: list[str] = [k.decode('utf-8') for k in Params().all_keys()]
try: try:
param_keys_validated = [key for key in params_keys if key in getParamsAllKeys()] param_keys_validated = [key for key in params_keys if key in available_keys]
params_dict: dict[str, list[dict[str, str | bool | int]]] = {"params": []} params_dict: dict[str, list[dict[str, str | bool | int]]] = {"params": []}
for key in param_keys_validated: for key in param_keys_validated:
value = get_param_as_byte(key) value = get_param_as_byte(key)

View File

@@ -60,14 +60,20 @@ def get_api_token():
print(f"API Token: {token}") print(f"API Token: {token}")
def get_param_as_byte(param_name: str, params=None) -> bytes | None: def get_param_as_byte(param_name: str, params=None, get_default=False) -> bytes | None:
"""Get a parameter as bytes. Returns None if the parameter does not exist.""" """Get a parameter as bytes. Returns None if the parameter does not exist."""
params = params or Params() # Use existing Params instance if provided params = params or Params()
param = params.get(param_name) param = params.get(param_name) if not get_default else params.get_default_value(param_name)
if param is None: if param is None:
return None return None
param_type = params.get_type(param_name) param_type = params.get_type(param_name)
return _to_bytes(param, param_type)
def _to_bytes(param: bytes, param_type: ParamKeyType) -> bytes | None:
"""Convert a parameter value to bytes based on its type."""
if param_type == ParamKeyType.BYTES: if param_type == ParamKeyType.BYTES:
return bytes(param) return bytes(param)
elif param_type == ParamKeyType.JSON: elif param_type == ParamKeyType.JSON: