Skip to content

Commit a0967c0

Browse files
authored
Add get_capabilities (#27)
1 parent df4b375 commit a0967c0

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

onvif/client.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,7 @@ def __init__(
393393
self.adjust_time = adjust_time
394394
self.dt_diff = None
395395
self.xaddrs = {}
396+
self._capabilities: Optional[Dict[str, Any]] = None
396397

397398
# Active service client container
398399
self.services: Dict[Tuple[str, Optional[str]], ONVIFService] = {}
@@ -403,6 +404,12 @@ def __init__(
403404
self._snapshot_client = AsyncClient(verify=_NO_VERIFY_SSL_CONTEXT)
404405
self._background_tasks = set()
405406

407+
async def get_capabilities(self) -> Dict[str, Any]:
408+
"""Get device capabilities."""
409+
if self._capabilities is None:
410+
await self.update_xaddrs()
411+
return self._capabilities
412+
406413
async def update_xaddrs(self):
407414
"""Update xaddrs for services."""
408415
self.dt_diff = None
@@ -438,6 +445,10 @@ async def update_xaddrs(self):
438445
self.xaddrs[namespace] = capability["XAddr"]
439446
except Exception:
440447
logger.exception("Unexpected service type")
448+
try:
449+
self._capabilities = self.to_dict(capabilities)
450+
except Exception:
451+
logger.exception("Failed to parse capabilities")
441452

442453
async def create_pullpoint_subscription(
443454
self, config: Optional[Dict[str, Any]] = None

0 commit comments

Comments
 (0)