Skip to content

Commit bd55ade

Browse files
authored
Merge pull request #151 from StijnCaerts/update_stac-fastapi_2.4.8
Update stac-fastapi to v2.4.8
2 parents b324592 + cc143aa commit bd55ade

File tree

5 files changed

+21
-57
lines changed

5 files changed

+21
-57
lines changed

stac_fastapi/elasticsearch/setup.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
install_requires = [
99
"fastapi",
1010
"attrs",
11-
"pydantic[dotenv]",
11+
"pydantic[dotenv]<2",
1212
"stac_pydantic==2.0.*",
13-
"stac-fastapi.types==2.4.3",
14-
"stac-fastapi.api==2.4.3",
15-
"stac-fastapi.extensions==2.4.3",
13+
"stac-fastapi.types==2.4.8",
14+
"stac-fastapi.api==2.4.8",
15+
"stac-fastapi.extensions==2.4.8",
1616
"elasticsearch[async]==7.17.9",
1717
"elasticsearch-dsl==7.4.1",
1818
"pystac[validation]",

stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/app.py

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
"""FastAPI application."""
2-
from typing import List
3-
4-
import attr
5-
62
from stac_fastapi.api.app import StacApi
73
from stac_fastapi.api.models import create_get_request_model, create_post_request_model
84
from stac_fastapi.elasticsearch.config import ElasticsearchSettings
@@ -28,52 +24,15 @@
2824
settings = ElasticsearchSettings()
2925
session = Session.create_from_settings(settings)
3026

31-
32-
@attr.s
33-
class FixedSortExtension(SortExtension):
34-
"""SortExtension class fixed with correct paths, removing extra forward-slash."""
35-
36-
conformance_classes: List[str] = attr.ib(
37-
factory=lambda: ["https://api.stacspec.org/v1.0.0-beta.4/item-search#sort"]
38-
)
39-
40-
41-
@attr.s
42-
class FixedFilterExtension(FilterExtension):
43-
"""FilterExtension class fixed with correct paths, removing extra forward-slash."""
44-
45-
conformance_classes: List[str] = attr.ib(
46-
default=[
47-
"https://api.stacspec.org/v1.0.0-rc.1/item-search#filter",
48-
"http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/filter",
49-
"http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/features-filter",
50-
"http://www.opengis.net/spec/cql2/1.0/conf/cql2-text",
51-
"http://www.opengis.net/spec/cql2/1.0/conf/cql2-json",
52-
"http://www.opengis.net/spec/cql2/1.0/conf/basic-cql2",
53-
"http://www.opengis.net/spec/cql2/1.0/conf/basic-spatial-operators",
54-
]
55-
)
56-
client = attr.ib(factory=EsAsyncBaseFiltersClient)
57-
58-
59-
@attr.s
60-
class FixedQueryExtension(QueryExtension):
61-
"""Fixed Query Extension string."""
62-
63-
conformance_classes: List[str] = attr.ib(
64-
factory=lambda: ["https://api.stacspec.org/v1.0.0-beta.4/item-search#query"]
65-
)
66-
67-
6827
extensions = [
6928
TransactionExtension(client=TransactionsClient(session=session), settings=settings),
7029
BulkTransactionExtension(client=BulkTransactionsClient(session=session)),
7130
FieldsExtension(),
72-
FixedQueryExtension(),
73-
FixedSortExtension(),
31+
QueryExtension(),
32+
SortExtension(),
7433
TokenPaginationExtension(),
7534
ContextExtension(),
76-
FixedFilterExtension(),
35+
FilterExtension(client=EsAsyncBaseFiltersClient()),
7736
]
7837

7938
post_request_model = create_post_request_model(extensions)

stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/core.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ async def get_search(
286286
token: Optional[str] = None,
287287
fields: Optional[List[str]] = None,
288288
sortby: Optional[str] = None,
289+
intersects: Optional[str] = None,
289290
# filter: Optional[str] = None, # todo: requires fastapi > 2.3 unreleased
290291
# filter_lang: Optional[str] = None, # todo: requires fastapi > 2.3 unreleased
291292
**kwargs,
@@ -302,6 +303,7 @@ async def get_search(
302303
token (Optional[str]): Access token to use when searching the catalog.
303304
fields (Optional[List[str]]): Fields to include or exclude from the results.
304305
sortby (Optional[str]): Sorting options for the results.
306+
intersects (Optional[str]): GeoJSON geometry to search in.
305307
kwargs: Additional parameters to be passed to the API.
306308
307309
Returns:
@@ -322,6 +324,9 @@ async def get_search(
322324
if datetime:
323325
base_args["datetime"] = datetime
324326

327+
if intersects:
328+
base_args["intersects"] = intersects
329+
325330
if sortby:
326331
# https://github.com/radiantearth/stac-spec/tree/master/api-spec/extensions/sort#http-get-or-post-form
327332
sort_param = []

stac_fastapi/elasticsearch/tests/api/test_api.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,9 @@ async def test_app_query_extension_limit_lt0(app_client):
187187

188188

189189
async def test_app_query_extension_limit_gt10000(app_client):
190-
assert (await app_client.post("/search", json={"limit": 10001})).status_code == 400
190+
resp = await app_client.post("/search", json={"limit": 10001})
191+
assert resp.status_code == 200
192+
assert resp.json()["context"]["limit"] == 10000
191193

192194

193195
async def test_app_query_extension_limit_10000(app_client):

stac_fastapi/elasticsearch/tests/conftest.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,19 @@
1010

1111
from stac_fastapi.api.app import StacApi
1212
from stac_fastapi.api.models import create_get_request_model, create_post_request_model
13-
from stac_fastapi.elasticsearch.app import (
14-
FixedFilterExtension,
15-
FixedQueryExtension,
16-
FixedSortExtension,
17-
)
1813
from stac_fastapi.elasticsearch.config import AsyncElasticsearchSettings
1914
from stac_fastapi.elasticsearch.core import (
2015
BulkTransactionsClient,
2116
CoreClient,
2217
TransactionsClient,
2318
)
2419
from stac_fastapi.elasticsearch.database_logic import create_collection_index
20+
from stac_fastapi.elasticsearch.extensions import QueryExtension
2521
from stac_fastapi.extensions.core import ( # FieldsExtension,
2622
ContextExtension,
2723
FieldsExtension,
24+
FilterExtension,
25+
SortExtension,
2826
TokenPaginationExtension,
2927
TransactionExtension,
3028
)
@@ -160,11 +158,11 @@ async def app():
160158
client=TransactionsClient(session=None), settings=settings
161159
),
162160
ContextExtension(),
163-
FixedSortExtension(),
161+
SortExtension(),
164162
FieldsExtension(),
165-
FixedQueryExtension(),
163+
QueryExtension(),
166164
TokenPaginationExtension(),
167-
FixedFilterExtension(),
165+
FilterExtension(),
168166
]
169167

170168
post_request_model = create_post_request_model(extensions)

0 commit comments

Comments
 (0)