|
3 | 3 | import json |
4 | 4 | import os |
5 | 5 | from dataclasses import dataclass, field |
6 | | -from typing import Callable, Dict, Optional, Type |
| 6 | +from typing import Any, Callable, Dict, Optional, Tuple, Type |
7 | 7 | from urllib.parse import urlencode |
8 | 8 |
|
9 | 9 | import rasterio |
@@ -31,6 +31,17 @@ def PathParams(searchid: str = Path(..., description="Search Id")) -> str: |
31 | 31 | return searchid |
32 | 32 |
|
33 | 33 |
|
| 34 | +def SearchParams(body: SearchQuery) -> Tuple[str, Optional[Dict[str, Any]]]: |
| 35 | + """Search parameters.""" |
| 36 | + search = body.json( |
| 37 | + exclude_none=True, |
| 38 | + exclude={"metadata"}, |
| 39 | + by_alias=True, |
| 40 | + ) |
| 41 | + metadata = body.metadata or {} |
| 42 | + return search, metadata |
| 43 | + |
| 44 | + |
34 | 45 | @dataclass |
35 | 46 | class PgSTACParams(DefaultDependency): |
36 | 47 | """PgSTAC parameters.""" |
@@ -68,6 +79,11 @@ class MosaicTilerFactory(BaseTilerFactory): |
68 | 79 | # TileMatrixSet dependency |
69 | 80 | tms_dependency: Callable[..., TileMatrixSet] = TMSParams |
70 | 81 |
|
| 82 | + # Search dependency |
| 83 | + search_dependency: Callable[ |
| 84 | + ..., Tuple[str, Optional[Dict[str, Any]]] |
| 85 | + ] = SearchParams |
| 86 | + |
71 | 87 | backend_options: Dict = field(default_factory=dict) |
72 | 88 |
|
73 | 89 | def register_routes(self) -> None: |
@@ -339,14 +355,12 @@ def _search_routes(self) -> None: |
339 | 355 | "/register", |
340 | 356 | responses={200: {"description": "Register a Search."}}, |
341 | 357 | ) |
342 | | - def register_search(request: Request, body: SearchQuery): |
| 358 | + def register_search( |
| 359 | + request: Request, |
| 360 | + search_query=Depends(self.search_dependency) |
| 361 | + ): |
343 | 362 | """Register a Search query.""" |
344 | | - search = body.json( |
345 | | - exclude_none=True, |
346 | | - exclude={"metadata"}, |
347 | | - by_alias=True, |
348 | | - ) |
349 | | - metadata = body.metadata or {} |
| 363 | + search, metadata = search_query |
350 | 364 |
|
351 | 365 | with request.app.state.dbpool.connection() as conn: |
352 | 366 | with conn.cursor() as cursor: |
|
0 commit comments