Source code for httk.optimade.api

from starlette.applications import Starlette

from .backend.adapter import BackendAdapter
from .model.config import OptimadeConfig
from .runtime.asgi import create_app
from .runtime.devserver import run_dev_server


[docs] def create_asgi_app( adapter: BackendAdapter, config: OptimadeConfig | None = None, *, baseurl: str | None = None, debug: bool = False, ) -> Starlette: """Create an ASGI application serving an OPTIMADE API for the given backend.""" if config is None: config = OptimadeConfig() return create_app( query_function=adapter.query_function(), config=config, schema=adapter.schema, baseurl=baseurl, debug=debug )
[docs] def serve( adapter: BackendAdapter, config: OptimadeConfig | None = None, *, host: str = "127.0.0.1", port: int = 8080, baseurl: str | None = None, debug: bool = False, ) -> None: """Serve an OPTIMADE API for the given backend with a development web server.""" if baseurl is None: baseurl = f"http://{host}:{port}/" if port != 80 else f"http://{host}/" app = create_asgi_app(adapter, config, baseurl=baseurl, debug=debug) run_dev_server(app=app, host=host, port=port)