Skip to content

Commit 2060335

Browse files
committed
fix: query in get requests
1 parent e04a25f commit 2060335

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

pystac_client/item_search.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,11 @@ def _clean_params_for_get_request(self) -> Dict[str, Any]:
328328
if "collections" in params:
329329
params["collections"] = ",".join(params["collections"])
330330
if "intersects" in params:
331-
params["intersects"] = json.dumps(params["intersects"])
331+
params["intersects"] = json.dumps(
332+
params["intersects"], separators=(",", ":")
333+
)
334+
if "query" in params:
335+
params["query"] = json.dumps(params["query"], separators=(",", ":"))
332336
if "sortby" in params:
333337
params["sortby"] = self._sortby_dict_to_str(params["sortby"])
334338
if "fields" in params:

pystac_client/stac_api_io.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,6 @@ def request(
154154
request = Request(method=method, url=href, headers=headers, json=parameters)
155155
else:
156156
params = deepcopy(parameters) or {}
157-
if "intersects" in params:
158-
params["intersects"] = json.dumps(params["intersects"])
159157
request = Request(method="GET", url=href, headers=headers, params=params)
160158
try:
161159
modified = self._req_modifier(request) if self._req_modifier else None

tests/test_item_search.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import requests
99
from dateutil.tz import gettz, tzutc
1010
from pytest_benchmark.fixture import BenchmarkFixture
11+
from requests_mock import Mocker
1112

1213
from pystac_client import Client
1314
from pystac_client.item_search import ItemSearch
@@ -619,6 +620,23 @@ def __geo_interface__(self) -> Dict[str, Any]:
619620
new_results = search.items()
620621
assert all(isinstance(item, pystac.Item) for item in new_results)
621622

623+
def test_get_with_query(self, requests_mock: Mocker) -> None:
624+
requests_mock.get(
625+
(
626+
f"{SEARCH_URL}?query=%7B%22eo%3Acloud_cover%22%3A%7B%22gte%22%3A0%2C%22lte%22%3A10%7D%7D"
627+
),
628+
status_code=200,
629+
json={"features": [{"foo": "bar"}], "links": []},
630+
)
631+
items = list(
632+
ItemSearch(
633+
url=SEARCH_URL,
634+
method="GET",
635+
query={"eo:cloud_cover": {"gte": 0, "lte": 10}},
636+
).items_as_dicts()
637+
)
638+
assert len(items) == 1
639+
622640
@pytest.mark.vcr
623641
def test_result_paging(self) -> None:
624642
search = ItemSearch(

0 commit comments

Comments
 (0)