diff --git a/cads_adaptors/adaptors/__init__.py b/cads_adaptors/adaptors/__init__.py index 51e676a0..e0c4c4e4 100644 --- a/cads_adaptors/adaptors/__init__.py +++ b/cads_adaptors/adaptors/__init__.py @@ -102,6 +102,27 @@ def __init__( pathlib.Path() if cache_tmp_path is None else cache_tmp_path ) + @abc.abstractmethod + def check_validity(self, request: Request) -> None: + """Check the validity of the request. + + Parameters + ---------- + request : Request + Incoming request. + + Returns + ------- + None + If the request is valid. + + Raises + ------ + cads_adaptors.exceptions.InvalidRequest + If the request is invalid. + """ + pass + @abc.abstractmethod def normalise_request(self, request: Request) -> Request: """Apply any normalisation to the request before validation. @@ -207,6 +228,9 @@ class DummyAdaptor(AbstractAdaptor): def apply_constraints(self, request: Request) -> dict[str, Any]: return {} + def check_validity(self, request: Request) -> None: + return + def estimate_costs(self, request: Request, **kwargs: Any) -> dict[str, int]: size = int(request.get("size", 0)) time = int(request.get("time", 0.0)) diff --git a/cads_adaptors/adaptors/cds.py b/cads_adaptors/adaptors/cds.py index c13b3ab8..5974baa0 100644 --- a/cads_adaptors/adaptors/cds.py +++ b/cads_adaptors/adaptors/cds.py @@ -57,6 +57,9 @@ def retrieve(self, request: Request) -> BinaryIO: result = self.retrieve_list_of_results(request) return self.make_download_object(result) + def check_validity(self, request: Request) -> None: + return + def apply_constraints(self, request: Request) -> dict[str, Any]: return constraints.validate_constraints(self.form, request, self.constraints)