|
5 | 5 | from sqlalchemy.orm import sessionmaker |
6 | 6 | from starlette.requests import Request |
7 | 7 |
|
| 8 | +from stac_api.api.models import ItemUri |
8 | 9 | from stac_api.api.routers import ( |
9 | 10 | create_core_router, |
10 | 11 | create_tiles_router, |
11 | 12 | create_transactions_router, |
12 | 13 | ) |
| 14 | +from stac_api.api.routes import create_endpoint_with_depends |
13 | 15 | from stac_api.clients.postgres.core import CoreCrudClient |
14 | 16 | from stac_api.clients.postgres.tokens import PaginationTokenClient |
15 | 17 | from stac_api.clients.postgres.transactions import TransactionsClient |
16 | 18 | from stac_api.clients.tiles.ogc import TilesClient |
17 | 19 | from stac_api.config import AddOns, ApiExtensions, ApiSettings, inject_settings |
18 | 20 | from stac_api.errors import DEFAULT_STATUS_CODES, add_exception_handlers |
| 21 | +from stac_api.models.ogc import TileSetResource |
19 | 22 | from stac_api.openapi import config_openapi |
20 | 23 | from stac_api.utils.dependencies import READER, WRITER |
21 | 24 |
|
@@ -43,7 +46,17 @@ def create_app(settings: ApiSettings) -> FastAPI: |
43 | 46 |
|
44 | 47 | if settings.add_on_is_enabled(AddOns.tiles): |
45 | 48 | tiles_client = TilesClient() |
46 | | - app.include_router(create_tiles_router(tiles_client)) |
| 49 | + app.add_api_route( |
| 50 | + name="Get OGC Tiles Resource", |
| 51 | + path="/collections/{collectionId}/items/{itemId}/tiles", |
| 52 | + response_model=TileSetResource, |
| 53 | + response_model_exclude_none=True, |
| 54 | + response_model_exclude_unset=True, |
| 55 | + methods=["GET"], |
| 56 | + endpoint=create_endpoint_with_depends(tiles_client.get_item_tiles, ItemUri), |
| 57 | + tags=["OGC Tiles"], |
| 58 | + ) |
| 59 | + app.include_router(create_tiles_router(), prefix="/titiler", tags=["Titiler"]) |
47 | 60 |
|
48 | 61 | config_openapi(app) |
49 | 62 |
|
@@ -72,6 +85,8 @@ async def on_shutdown(): |
72 | 85 | @app.middleware("http") |
73 | 86 | async def create_db_connection(request: Request, call_next): |
74 | 87 | """Create a new database connection for each request""" |
| 88 | + if "titiler" in str(request.url): |
| 89 | + return await call_next(request) |
75 | 90 | reader = request.app.state.DB_READER() |
76 | 91 | writer = request.app.state.DB_WRITER() |
77 | 92 | READER.set(reader) |
|
0 commit comments