Skip to content

Commit de777a9

Browse files
committed
Refactor tests
1 parent cd08fcd commit de777a9

File tree

3 files changed

+202
-263
lines changed

3 files changed

+202
-263
lines changed

src/stac_auth_proxy/handlers/reverse_proxy.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,16 @@ async def proxy_request(self, request: Request, *, stream=False) -> httpx.Respon
8282
func=filter_builder,
8383
request=request,
8484
)
85+
cql_filter.validate()
86+
8587
if request.method == "GET":
8688
query = filters.insert_filter(qs=query, filter=cql_filter)
8789
elif request.method in ["POST", "PUT"]:
8890
body_dict = json.loads(body)
8991
body_filter = body_dict.get("filter")
90-
combined_filter = (
91-
filters.combine_filters([Expr(body_filter), cql_filter])
92-
if body_filter
93-
else cql_filter
94-
)
95-
body_dict["filter"] = combined_filter.to_json()
92+
if body_filter:
93+
cql_filter = cql_filter + Expr(body_filter)
94+
body_dict["filter"] = cql_filter.to_json()
9695
body = json.dumps(body_dict)
9796

9897
# https://github.com/fastapi/fastapi/discussions/7382#discussioncomment-5136466

src/stac_auth_proxy/utils/filters.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,15 @@
66
from cql2 import Expr
77

88

9-
def combine_filters(filters: list[Expr]) -> Expr:
10-
"""Combine multiple filters into a single filter."""
11-
combined_filter = Expr(" AND ".join(e.to_text() for e in filters))
12-
combined_filter.validate()
13-
return combined_filter
14-
15-
169
def insert_filter(qs: str, filter: Expr) -> str:
1710
"""Insert a filter expression into a query string. If a filter already exists, combine them."""
1811
qs_dict = parse_qs(qs)
1912

20-
filters = [Expr(f) for f in qs_dict.get("filter", [])]
21-
filters.append(filter)
13+
for qs_filter in qs_dict.get("filter", []):
14+
filter += Expr(qs_filter)
2215

23-
qs_dict["filter"] = [combine_filters(filters).to_text()]
16+
qs_dict["filter"] = filter.to_text()
17+
qs_dict["filter-lang"] = "cql2-text"
2418

2519
return urlencode(qs_dict, doseq=True)
2620

0 commit comments

Comments
 (0)