Skip to content

Commit a1c5fc1

Browse files
Yuri ZmytrakovYuri Zmytrakov
authored andcommitted
fix: remove and update broken conformance links
- Replaced outdated conf links with correct req links - Removed invalid or missing STAC and OGC links - Updated item-search RC links to match implemented version
1 parent 56af26d commit a1c5fc1

File tree

2 files changed

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

2 files changed

+65
-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: 56 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,26 +68,55 @@
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 != "https://api.stacspec.org/v1.0.0-rc.1/collection-search"
94+
]
7995

8096
aggregation_extension = AggregationExtension(
8197
client=EsAsyncBaseAggregationClient(
8298
database=database_logic, session=session, settings=settings
8399
)
84100
)
101+
102+
aggregation_extension.conformance_classes = [
103+
cls
104+
for cls in aggregation_extension.conformance_classes
105+
if cls != "https://api.stacspec.org/v0.3.0/aggregation"
106+
]
107+
85108
aggregation_extension.POST = EsAggregationExtensionPostRequest
86109
aggregation_extension.GET = EsAggregationExtensionGetRequest
87110

88111
fields_extension = FieldsExtension()
89112
fields_extension.conformance_classes.append(FieldsConformanceClasses.ITEMS)
90113

114+
fields_extension.conformance_classes = [
115+
cls
116+
for cls in fields_extension.conformance_classes
117+
if cls.value != "http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/simple-query"
118+
]
119+
91120
search_extensions = [
92121
fields_extension,
93122
QueryExtension(),
@@ -120,6 +149,30 @@
120149
),
121150
)
122151

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

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

0 commit comments

Comments
 (0)