summaryrefslogtreecommitdiff
path: root/server/szurubooru/rest/context.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/szurubooru/rest/context.py')
-rw-r--r--server/szurubooru/rest/context.py29
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: