Skip to content

Commit 7839bdc

Browse files
committed
fix(python,scala): enhance deserialization and HTTP header handling
Python: handle non-string input for list types, add dict type deserialization in api_response.py Scala: add withHeader(key, Option[Any]) overload that skips None values in HttpRequest.scala
1 parent 452ac04 commit 7839bdc

2 files changed

Lines changed: 12 additions & 0 deletions

File tree

clients/algoliasearch-client-python/algoliasearch/http/api_response.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@ def deserialize(klass: Any = None, data: Any = None) -> Any:
6868
arr = json.loads(data)
6969
return [ApiResponse.deserialize(sub_kls, sub_data) for sub_data in arr]
7070

71+
if hasattr(klass, "__origin__") and klass.__origin__ is dict:
72+
sub_kls = klass.__args__[1]
73+
obj = json.loads(data) if isinstance(data, str) else data
74+
return {k: ApiResponse.deserialize(sub_kls, v) for k, v in obj.items()}
75+
7176
if isinstance(klass, str):
7277
if klass.startswith("List["):
7378
sub_kls = match(r"List\[(.*)]", klass)

clients/algoliasearch-client-scala/src/main/scala/algoliasearch/config/HttpRequest.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,13 @@ object HttpRequest {
100100
this
101101
}
102102

103+
def withHeader(key: String, value: Option[Any]): HttpRequest.Builder = {
104+
value match {
105+
case Some(param) => withHeader(key, param)
106+
case None => this
107+
}
108+
}
109+
103110
def withHeaders(headers: Map[String, Any]): HttpRequest.Builder = {
104111
for ((key, value) <- headers)
105112
withHeader(key, value)

0 commit comments

Comments
 (0)