Skip to content

Commit 1f40e00

Browse files
authored
Prevent None service parameters from being sent over network (#30)
1 parent 1e8292b commit 1f40e00

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/abstract_api/core/bases/base_service.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,30 +101,40 @@ def _service_request(
101101
Returns:
102102
Parsed AbstractAPI's response.
103103
"""
104+
# Prepare HTTP method
104105
_method = _method.lower()
105106
if _method not in ["get", "post"]:
106107
raise ClientRequestError(
107108
f"Invalid or not allowed HTTP method '{_method}'"
108109
)
109110

111+
# Build request kwargs
110112
request_kwargs: dict[str, Any] = {
111113
"method": _method,
112114
"url": self.__service_url(_action)
113115
}
114-
115116
if _method == "get":
116-
request_kwargs["params"] = {"api_key": self._api_key} | params
117+
request_kwargs["params"] = {"api_key": self._api_key} | {
118+
# Ignore all None parameters, no need to transfer them over
119+
# the network call.
120+
param: value
121+
for param, value in params.items()
122+
if value is not None
123+
}
117124
else:
118125
if _files:
119126
request_kwargs["files"] = _files
120127
if _body:
121128
request_kwargs["json"] = _body
122129

130+
# Make call
123131
response = requests.request(**request_kwargs)
124132

133+
# Ensure accepted response
125134
if response.status_code not in [codes.OK, codes.NO_CONTENT]:
126135
APIRequestError.raise_from_response(response)
127136

137+
# Parse response
128138
if _response_class_kwargs is None:
129139
_response_class_kwargs = {}
130140

0 commit comments

Comments
 (0)