Skip to content

Commit 6160569

Browse files
Support query maps with list values
1 parent 46975ec commit 6160569

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

packages/smithy-http/src/smithy_http/serializers.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -570,12 +570,27 @@ def __init__(self, query_params: list[tuple[str, str]]) -> None:
570570
:param query_params: The list of query param tuples to append to.
571571
"""
572572
self._query_params = query_params
573-
self._delegate = CapturingSerializer()
574573

575574
def entry(self, key: str, value_writer: Callable[[ShapeSerializer], None]):
576-
value_writer(self._delegate)
577-
assert self._delegate.result is not None # noqa: S101
578-
self._query_params.append((key, urlquote(self._delegate.result, safe="")))
575+
value_writer(HTTPQueryMapValueSerializer(key, self._query_params))
576+
577+
578+
class HTTPQueryMapValueSerializer(SpecificShapeSerializer):
579+
def __init__(self, key: str, query_params: list[tuple[str, str]]) -> None:
580+
"""Initialize an HTTPQueryMapValueSerializer.
581+
582+
:param key: The key of the query parameter.
583+
:param query_params: The list of query param tuples to append to.
584+
"""
585+
self._key = key
586+
self._query_params = query_params
587+
588+
def write_string(self, schema: Schema, value: str) -> None:
589+
self._query_params.append((self._key, urlquote(value, safe="")))
590+
591+
@contextmanager
592+
def begin_list(self, schema: Schema, size: int) -> Iterator[ShapeSerializer]:
593+
yield self
579594

580595

581596
class HostPrefixSerializer(SpecificShapeSerializer):

0 commit comments

Comments
 (0)