diff --git a/pygeoapi/provider/base_edr.py b/pygeoapi/provider/base_edr.py index a4e234ec5..1dacbadd8 100644 --- a/pygeoapi/provider/base_edr.py +++ b/pygeoapi/provider/base_edr.py @@ -28,8 +28,10 @@ # ================================================================= import logging +from typing import Optional -from pygeoapi.provider.base import BaseProvider, ProviderInvalidDataError +from pygeoapi.provider.base import (BaseProvider, ProviderInvalidDataError, + ProviderQueryError) LOGGER = logging.getLogger(__name__) @@ -116,8 +118,16 @@ def query(self, **kwargs): :returns: coverage data as `dict` of CoverageJSON or native format """ - + query_type: Optional[str] = kwargs.get('query_type') + if not query_type: + raise ProviderQueryError( + 'query_type parameter is required' + ) try: - return getattr(self, kwargs.get('query_type'))(**kwargs) + query_function = getattr(self, query_type) except AttributeError: - raise NotImplementedError('Query not implemented!') + raise NotImplementedError( + f'Query "{query_type}" not implemented in registered query types: {self.query_types}' # noqa + ) + + return query_function(**kwargs)