Skip to content

Commit 8c52840

Browse files
Yuri ZmytrakovYuri Zmytrakov
authored andcommitted
fix: remove broken conformance links
1 parent 56af26d commit 8c52840

File tree

2 files changed

+67
-4
lines changed
  • stac_fastapi
    • core/stac_fastapi/core
    • opensearch/stac_fastapi/opensearch

2 files changed

+67
-4
lines changed

stac_fastapi/core/stac_fastapi/core/core.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,15 @@ class CoreClient(AsyncBaseCoreClient):
7272

7373
database: BaseDatabaseLogic = attr.ib()
7474
base_conformance_classes: List[str] = attr.ib(
75-
factory=lambda: BASE_CONFORMANCE_CLASSES
75+
factory=lambda: [
76+
(
77+
"http://www.opengis.net/spec/ogcapi-features-1/1.0/req/oas30"
78+
if cls.value
79+
== "http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/oas30"
80+
else cls.value
81+
)
82+
for cls in BASE_CONFORMANCE_CLASSES
83+
]
7684
)
7785
extensions: List[ApiExtension] = attr.ib(default=attr.Factory(list))
7886

stac_fastapi/opensearch/stac_fastapi/opensearch/app.py

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,26 +68,58 @@
6868
filter_extension.conformance_classes.append(
6969
FilterConformanceClasses.ADVANCED_COMPARISON_OPERATORS
7070
)
71+
filter_extension.conformance_classes = [
72+
"https://api.stacspec.org/v1.0.0-rc.1/item-search#filter"
73+
if cls.value == "https://api.stacspec.org/v1.0.0-rc.2/item-search#filter"
74+
else cls.value
75+
for cls in filter_extension.conformance_classes
76+
]
7177

7278
# Adding collection search extension for compatibility with stac-auth-proxy
7379
# (https://github.com/developmentseed/stac-auth-proxy)
7480
# The extension is not fully implemented yet but is required for collection filtering support
7581
collection_search_extension = CollectionSearchExtension()
76-
collection_search_extension.conformance_classes.append(
77-
"https://api.stacspec.org/v1.0.0-rc.1/collection-search#filter"
78-
)
82+
83+
collection_search_extension.conformance_classes = [
84+
"http://www.opengis.net/spec/ogcapi-common-2/1.0/req/simple-query"
85+
if cls == "http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/simple-query"
86+
else cls
87+
for cls in collection_search_extension.conformance_classes
88+
]
89+
90+
collection_search_extension.conformance_classes = [
91+
cls
92+
for cls in collection_search_extension.conformance_classes
93+
if cls
94+
not in [
95+
"https://api.stacspec.org/v1.0.0-rc.1/collection-search",
96+
]
97+
]
7998

8099
aggregation_extension = AggregationExtension(
81100
client=EsAsyncBaseAggregationClient(
82101
database=database_logic, session=session, settings=settings
83102
)
84103
)
104+
105+
aggregation_extension.conformance_classes = [
106+
cls
107+
for cls in aggregation_extension.conformance_classes
108+
if cls != "https://api.stacspec.org/v0.3.0/aggregation"
109+
]
110+
85111
aggregation_extension.POST = EsAggregationExtensionPostRequest
86112
aggregation_extension.GET = EsAggregationExtensionGetRequest
87113

88114
fields_extension = FieldsExtension()
89115
fields_extension.conformance_classes.append(FieldsConformanceClasses.ITEMS)
90116

117+
fields_extension.conformance_classes = [
118+
cls
119+
for cls in fields_extension.conformance_classes
120+
if cls.value != "http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/simple-query"
121+
]
122+
91123
search_extensions = [
92124
fields_extension,
93125
QueryExtension(),
@@ -120,6 +152,29 @@
120152
),
121153
)
122154

155+
LINKS_TO_BE_REMOVED = {
156+
"https://api.stacspec.org/v1.0.0/collections/extensions/transaction",
157+
"https://api.stacspec.org/v1.0.0/ogcapi-features/extensions/transaction",
158+
"https://api.stacspec.org/v1.0.0/item-search#query",
159+
"https://api.stacspec.org/v1.0.0-rc.1/item-search#free-text",
160+
}
161+
162+
for extension in search_extensions:
163+
extension.conformance_classes = [
164+
cls for cls in extension.conformance_classes if cls not in LINKS_TO_BE_REMOVED
165+
]
166+
167+
for extension in search_extensions:
168+
extension.conformance_classes = [
169+
"https://api.stacspec.org/v1.0.0-rc.1/item-search#fields"
170+
if cls == "https://api.stacspec.org/v1.0.0/item-search#fields"
171+
else "https://api.stacspec.org/v1.0.0-rc.1/item-search#sort"
172+
if cls == "https://api.stacspec.org/v1.0.0/item-search#sort"
173+
else cls
174+
for cls in extension.conformance_classes
175+
]
176+
177+
123178
extensions = [aggregation_extension] + search_extensions
124179

125180
database_logic.extensions = [type(ext).__name__ for ext in extensions]

0 commit comments

Comments
 (0)