uiprotect 7.18.0__tar.gz → 7.19.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of uiprotect might be problematic. Click here for more details.

Files changed (38) hide show
  1. {uiprotect-7.18.0 → uiprotect-7.19.0}/PKG-INFO +1 -1
  2. {uiprotect-7.18.0 → uiprotect-7.19.0}/pyproject.toml +1 -1
  3. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/api.py +13 -1
  4. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/utils.py +5 -0
  5. {uiprotect-7.18.0 → uiprotect-7.19.0}/LICENSE +0 -0
  6. {uiprotect-7.18.0 → uiprotect-7.19.0}/README.md +0 -0
  7. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/__init__.py +0 -0
  8. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/__main__.py +0 -0
  9. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/_compat.py +0 -0
  10. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/__init__.py +0 -0
  11. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/aiports.py +0 -0
  12. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/backup.py +0 -0
  13. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/base.py +0 -0
  14. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/cameras.py +0 -0
  15. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/chimes.py +0 -0
  16. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/doorlocks.py +0 -0
  17. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/events.py +0 -0
  18. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/lights.py +0 -0
  19. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/liveviews.py +0 -0
  20. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/nvr.py +0 -0
  21. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/sensors.py +0 -0
  22. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/cli/viewers.py +0 -0
  23. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/data/__init__.py +0 -0
  24. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/data/base.py +0 -0
  25. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/data/bootstrap.py +0 -0
  26. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/data/convert.py +0 -0
  27. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/data/devices.py +0 -0
  28. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/data/nvr.py +0 -0
  29. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/data/types.py +0 -0
  30. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/data/user.py +0 -0
  31. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/data/websocket.py +0 -0
  32. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/exceptions.py +0 -0
  33. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/py.typed +0 -0
  34. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/release_cache.json +0 -0
  35. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/stream.py +0 -0
  36. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/test_util/__init__.py +0 -0
  37. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/test_util/anonymize.py +0 -0
  38. {uiprotect-7.18.0 → uiprotect-7.19.0}/src/uiprotect/websocket.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: uiprotect
3
- Version: 7.18.0
3
+ Version: 7.19.0
4
4
  Summary: Python API for Unifi Protect (Unofficial)
5
5
  License: MIT
6
6
  Author: UI Protect Maintainers
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uiprotect"
3
- version = "7.18.0"
3
+ version = "7.19.0"
4
4
  license = "MIT"
5
5
  description = "Python API for Unifi Protect (Unofficial)"
6
6
  authors = [{ name = "UI Protect Maintainers", email = "ui@koston.org" }]
@@ -65,6 +65,7 @@ from .utils import (
65
65
  decode_token_cookie,
66
66
  get_response_reason,
67
67
  ip_from_host,
68
+ pybool_to_json_bool,
68
69
  set_debug,
69
70
  to_js_time,
70
71
  utc_now,
@@ -1529,7 +1530,7 @@ class ProtectApiClient(BaseApiClient):
1529
1530
  public_api=True,
1530
1531
  raise_exception=False,
1531
1532
  url=f"/v1/cameras/{camera_id}/snapshot",
1532
- params={"highQuality": high_quality},
1533
+ params={"highQuality": pybool_to_json_bool(high_quality)},
1533
1534
  )
1534
1535
 
1535
1536
  async def get_package_camera_snapshot(
@@ -2119,6 +2120,17 @@ class ProtectApiClient(BaseApiClient):
2119
2120
 
2120
2121
  return response["data"]["full_api_key"]
2121
2122
 
2123
+ def set_api_key(self, api_key: str) -> None:
2124
+ """Set the API key for the NVR."""
2125
+ if not api_key:
2126
+ raise BadRequest("API key cannot be empty")
2127
+
2128
+ self._api_key = api_key
2129
+
2130
+ def is_api_key_set(self) -> bool:
2131
+ """Check if the API key is set."""
2132
+ return bool(self._api_key)
2133
+
2122
2134
  async def get_meta_info(self) -> MetaInfo:
2123
2135
  """Get metadata about the NVR."""
2124
2136
  data = await self.api_request(
@@ -700,3 +700,8 @@ def make_required_getter(ufp_required_field: str) -> Callable[[T], bool]:
700
700
  @lru_cache
701
701
  def timedelta_total_seconds(td: timedelta) -> float:
702
702
  return td.total_seconds()
703
+
704
+
705
+ def pybool_to_json_bool(value: bool) -> str:
706
+ """Convert a Python bool to a JSON boolean string ('true'/'false')."""
707
+ return "true" if value else "false"
File without changes
File without changes