Skip to content

Commit ee785d7

Browse files
Support query maps with list values
1 parent cbbae6b commit ee785d7

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
@@ -593,12 +593,27 @@ def __init__(self, query_params: list[tuple[str, str]]) -> None:
593593
:param query_params: The list of query param tuples to append to.
594594
"""
595595
self._query_params = query_params
596-
self._delegate = CapturingSerializer()
597596

598597
def entry(self, key: str, value_writer: Callable[[ShapeSerializer], None]):
599-
value_writer(self._delegate)
600-
assert self._delegate.result is not None # noqa: S101
601-
self._query_params.append((key, urlquote(self._delegate.result, safe="")))
598+
value_writer(HTTPQueryMapValueSerializer(key, self._query_params))
599+
600+
601+
class HTTPQueryMapValueSerializer(SpecificShapeSerializer):
602+
def __init__(self, key: str, query_params: list[tuple[str, str]]) -> None:
603+
"""Initialize an HTTPQueryMapValueSerializer.
604+
605+
:param key: The key of the query parameter.
606+
:param query_params: The list of query param tuples to append to.
607+
"""
608+
self._key = key
609+
self._query_params = query_params
610+
611+
def write_string(self, schema: Schema, value: str) -> None:
612+
self._query_params.append((self._key, urlquote(value, safe="")))
613+
614+
@contextmanager
615+
def begin_list(self, schema: Schema, size: int) -> Iterator[ShapeSerializer]:
616+
yield self
602617

603618

604619
class HostPrefixSerializer(SpecificShapeSerializer):

0 commit comments

Comments
 (0)