diff options
Diffstat (limited to 'server/szurubooru/rest/context.py')
| -rw-r--r-- | server/szurubooru/rest/context.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/server/szurubooru/rest/context.py b/server/szurubooru/rest/context.py index 40ba0bc..a75ca60 100644 --- a/server/szurubooru/rest/context.py +++ b/server/szurubooru/rest/context.py @@ -78,6 +78,9 @@ class Context: def has_param(self, name: str) -> bool: return name in self._params + def get_param(self, name: str) -> Any: + return self._params[name] + def get_param_as_list( self, name: str, default: Union[object, List[Any]] = MISSING ) -> List[Any]: @@ -176,6 +179,32 @@ class Context: "Parameter %r must be an integer value." % name ) + def get_param_as_float( + self, + name: str, + default: Union[object, float] = MISSING, + min: Optional[float] = None, + max: Optional[float] = None) -> float: + if name not in self._params: + if default is not MISSING: + return cast(float, default) + raise errors.MissingRequiredParameterError( + "Required parameter %r is missing." % name) + value = self._params[name] + try: + value = float(value) + if min is not None and value < min: + raise errors.InvalidParameterError( + "Parameter %r must be at least %r." % (name, min)) + if max is not None and value > max: + raise errors.InvalidParameterError( + "Parameter %r may not exceed %r." % (name, max)) + return value + except (ValueError, TypeError): + pass + raise errors.InvalidParameterError( + "Parameter %r must be a float value." % name) + def get_param_as_bool( self, name: str, default: Union[object, bool] = MISSING ) -> bool: |