Skip to content

Commit 9cd32bb

Browse files
committed
added support for objects in query params
1 parent 6100699 commit 9cd32bb

3 files changed

Lines changed: 17 additions & 10 deletions

File tree

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ requires = [
44
"certifi>=14.05.14",
55
"typer>=0.16",
66
"inquirer>=3.4.0",
7-
"recodex_cli_lib_eceltov>=0.0.64"
7+
"recodex_cli_lib_eceltov>=0.0.66"
88
]
99
build-backend = "setuptools.build_meta"
1010

@@ -27,7 +27,7 @@ dependencies = [
2727
"certifi>=14.05.14",
2828
"typer>=0.16",
2929
"inquirer>=3.4.0",
30-
"recodex_cli_lib_eceltov>=0.0.64"
30+
"recodex_cli_lib_eceltov>=0.0.66"
3131
]
3232

3333
[project.urls]

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ typer >= 0.16
44
inquirer >= 3.4.0
55
twine >= 6.1.0
66
build >= 1.2.2
7-
recodex-cli-lib-eceltov==0.0.64
7+
recodex-cli-lib-eceltov==0.0.66
88
flask >= 3.1.1
99
flake8 >= 7.3.0

src/recodex_cli/call_command/command.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import typer
22
import inquirer
33
import click
4+
from typing import Any
45
from collections.abc import Callable
56
from recodex_cli_lib.client import Client
67
from recodex_cli_lib.client_components.endpoint_resolver import EndpointResolver
@@ -97,21 +98,27 @@ def query_list_to_dict(
9798
presenter: str,
9899
action: str,
99100
query_values: list[str]
100-
) -> dict[str, str]:
101+
) -> dict[str, Any]:
101102
query_dict = {}
102103
for query_value in query_values:
103-
if query_value.count("=") != 1:
104+
if query_value.count("=") < 1:
104105
raise Exception("The query values need to be in <name=value> format.")
105106

106-
name, value = query_value.split("=")
107+
# there can be '=' in the value, so split by the first one
108+
split_pos = query_value.find("=")
109+
name = query_value[0: split_pos]
110+
value = query_value[split_pos + 1:]
111+
107112
query_param = endpoint_resolver.get_query_param(presenter, action, name)
108113
if not query_param or name != query_param["python_name"]:
109114
raise Exception(f"Unknown QUERY parameter: {name}.")
110115

111-
# handle arrays
112-
if query_param["schema"]["type"] == "array":
113-
# arrays are delimited with commas
114-
value = value.split(",")
116+
# handle arrays and objects
117+
if query_param["schema"]["type"] == "array" or query_param["schema"]["type"] == "object":
118+
try:
119+
value = cmd_utils.parse_json(value)
120+
except:
121+
raise Exception(f"The QUERY parameter '{name}' is not a valid JSON array or object.")
115122

116123
query_dict[name] = value
117124
return query_dict

0 commit comments

Comments
 (0)