diff --git a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/app.py b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/app.py index 99dec7cb..c1b4b5a3 100644 --- a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/app.py +++ b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/app.py @@ -1,4 +1,8 @@ """FastAPI application.""" +from typing import List + +import attr + from stac_fastapi.api.app import StacApi from stac_fastapi.api.models import create_get_request_model, create_post_request_model from stac_fastapi.elasticsearch.config import ElasticsearchSettings @@ -21,12 +25,33 @@ settings = ElasticsearchSettings() session = Session.create_from_settings(settings) + +# All of these extensions have their conformance class URL +# incorrect, with an extra `/` before the # +@attr.s +class FixedSortExtension(SortExtension): + """Fixed Sort Extension string.""" + + conformance_classes: List[str] = attr.ib( + factory=lambda: ["https://api.stacspec.org/v1.0.0-beta.4/item-search#sort"] + ) + + +@attr.s +class FixedQueryExtension(QueryExtension): + """Fixed Query Extension string.""" + + conformance_classes: List[str] = attr.ib( + factory=lambda: ["https://api.stacspec.org/v1.0.0-beta.4/item-search#query"] + ) + + extensions = [ TransactionExtension(client=TransactionsClient(session=session), settings=settings), BulkTransactionExtension(client=BulkTransactionsClient(session=session)), # FieldsExtension(), - QueryExtension(), - SortExtension(), + FixedQueryExtension(), + FixedSortExtension(), TokenPaginationExtension(), ContextExtension(), ] diff --git a/stac_fastapi/elasticsearch/tests/conftest.py b/stac_fastapi/elasticsearch/tests/conftest.py index b0028ec9..8e69d993 100644 --- a/stac_fastapi/elasticsearch/tests/conftest.py +++ b/stac_fastapi/elasticsearch/tests/conftest.py @@ -10,6 +10,7 @@ from stac_fastapi.api.app import StacApi from stac_fastapi.api.models import create_request_model +from stac_fastapi.elasticsearch.app import FixedQueryExtension, FixedSortExtension from stac_fastapi.elasticsearch.config import AsyncElasticsearchSettings from stac_fastapi.elasticsearch.core import ( BulkTransactionsClient, @@ -17,10 +18,8 @@ TransactionsClient, ) from stac_fastapi.elasticsearch.database_logic import create_collection_index -from stac_fastapi.elasticsearch.extensions import QueryExtension from stac_fastapi.extensions.core import ( # FieldsExtension, ContextExtension, - SortExtension, TokenPaginationExtension, TransactionExtension, ) @@ -144,9 +143,9 @@ async def app(): client=TransactionsClient(session=None), settings=settings ), ContextExtension(), - SortExtension(), + FixedSortExtension(), # FieldsExtension(), - QueryExtension(), + FixedQueryExtension(), TokenPaginationExtension(), ]