52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
"""Utilities for handling API response values.
|
|
|
|
Many APIs return boolean values as strings (``"true"``, ``"false"``)
|
|
rather than native JSON booleans. The Mattermost ``/api/v4/config/client``
|
|
endpoint is a notable example. These helpers handle both string and
|
|
boolean responses safely.
|
|
|
|
Usage::
|
|
|
|
from devx.utils.api import is_truthy, is_falsy
|
|
|
|
if not is_truthy(config.get("EnableOpenServer")):
|
|
raise ValueError("EnableOpenServer not enabled")
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
def is_truthy(value: str | bool | None) -> bool:
|
|
"""Check if an API config value is truthy.
|
|
|
|
The API may return strings (``"true"``/``"false"``) or native
|
|
booleans. This helper handles both.
|
|
|
|
Args:
|
|
value: The value to check (string, bool, or None).
|
|
|
|
Returns:
|
|
True if the value represents a truthy boolean.
|
|
"""
|
|
if isinstance(value, bool):
|
|
return value
|
|
return str(value).lower() == "true"
|
|
|
|
|
|
def is_falsy(value: str | bool | None) -> bool:
|
|
"""Check if an API config value is falsy.
|
|
|
|
The API may return strings (``"true"``/``"false"``) or native
|
|
booleans. This helper handles both.
|
|
|
|
Args:
|
|
value: The value to check (string, bool, or None).
|
|
|
|
Returns:
|
|
True if the value represents a falsy boolean.
|
|
"""
|
|
if isinstance(value, bool):
|
|
return not value
|
|
return str(value).lower() == "false"
|