mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-11 05:14:07 +00:00
extend BDD API tests to query via Python frameworks
A new config option ENGINE allows to choose between php and any of the supported Python engines.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
"""
|
||||
Server implementation using the falcon webserver framework.
|
||||
"""
|
||||
from typing import Type, Any
|
||||
from typing import Type, Any, Optional, Mapping
|
||||
from pathlib import Path
|
||||
|
||||
import falcon
|
||||
@@ -26,8 +26,8 @@ class NominatimV1:
|
||||
""" Implementation of V1 version of the Nominatim API.
|
||||
"""
|
||||
|
||||
def __init__(self, project_dir: Path) -> None:
|
||||
self.api = NominatimAPIAsync(project_dir)
|
||||
def __init__(self, project_dir: Path, environ: Optional[Mapping[str, str]]) -> None:
|
||||
self.api = NominatimAPIAsync(project_dir, environ)
|
||||
self.formatters = {}
|
||||
|
||||
for rtype in (StatusResult, ):
|
||||
@@ -67,12 +67,13 @@ class NominatimV1:
|
||||
self.format_response(req, resp, result)
|
||||
|
||||
|
||||
def get_application(project_dir: Path) -> falcon.asgi.App:
|
||||
def get_application(project_dir: Path,
|
||||
environ: Optional[Mapping[str, str]] = None) -> falcon.asgi.App:
|
||||
""" Create a Nominatim falcon ASGI application.
|
||||
"""
|
||||
app = falcon.asgi.App()
|
||||
|
||||
api = NominatimV1(project_dir)
|
||||
api = NominatimV1(project_dir, environ)
|
||||
|
||||
app.add_route('/status', api, suffix='status')
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"""
|
||||
Server implementation using the sanic webserver framework.
|
||||
"""
|
||||
from typing import Any, Optional
|
||||
from typing import Any, Optional, Mapping
|
||||
from pathlib import Path
|
||||
|
||||
import sanic
|
||||
@@ -64,12 +64,13 @@ async def status(request: sanic.Request) -> sanic.HTTPResponse:
|
||||
return api_response(request,await request.app.ctx.api.status())
|
||||
|
||||
|
||||
def get_application(project_dir: Path) -> sanic.Sanic:
|
||||
def get_application(project_dir: Path,
|
||||
environ: Optional[Mapping[str, str]] = None) -> sanic.Sanic:
|
||||
""" Create a Nominatim sanic ASGI application.
|
||||
"""
|
||||
app = sanic.Sanic("NominatimInstance")
|
||||
|
||||
app.ctx.api = NominatimAPIAsync(project_dir)
|
||||
app.ctx.api = NominatimAPIAsync(project_dir, environ)
|
||||
app.ctx.formatters = {}
|
||||
for rtype in (StatusResult, ):
|
||||
app.ctx.formatters[rtype] = formatting.create(rtype)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"""
|
||||
Server implementation using the starlette webserver framework.
|
||||
"""
|
||||
from typing import Any, Type
|
||||
from typing import Any, Type, Optional, Mapping
|
||||
from pathlib import Path
|
||||
|
||||
from starlette.applications import Starlette
|
||||
@@ -67,11 +67,12 @@ V1_ROUTES = [
|
||||
Route('/status', endpoint=on_status)
|
||||
]
|
||||
|
||||
def get_application(project_dir: Path) -> Starlette:
|
||||
def get_application(project_dir: Path,
|
||||
environ: Optional[Mapping[str, str]] = None) -> Starlette:
|
||||
""" Create a Nominatim falcon ASGI application.
|
||||
"""
|
||||
app = Starlette(debug=True, routes=V1_ROUTES)
|
||||
|
||||
app.state.API = NominatimAPIAsync(project_dir)
|
||||
app.state.API = NominatimAPIAsync(project_dir, environ)
|
||||
|
||||
return app
|
||||
|
||||
Reference in New Issue
Block a user