onvif-python 0.0.1__py3-none-any.whl

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.
Files changed (106) hide show
  1. onvif/__init__.py +13 -0
  2. onvif/client.py +485 -0
  3. onvif/operator.py +130 -0
  4. onvif/services/__init__.py +75 -0
  5. onvif/services/accesscontrol.py +105 -0
  6. onvif/services/accessrules.py +47 -0
  7. onvif/services/actionengine.py +46 -0
  8. onvif/services/analytics/analytics.py +60 -0
  9. onvif/services/analytics/ruleengine.py +44 -0
  10. onvif/services/analyticsdevice.py +122 -0
  11. onvif/services/appmgmt.py +40 -0
  12. onvif/services/authenticationbehavior.py +83 -0
  13. onvif/services/credential.py +159 -0
  14. onvif/services/deviceio.py +165 -0
  15. onvif/services/devicemgmt.py +410 -0
  16. onvif/services/display.py +62 -0
  17. onvif/services/doorcontrol.py +93 -0
  18. onvif/services/events/events.py +41 -0
  19. onvif/services/events/notification.py +34 -0
  20. onvif/services/events/pullpoint.py +29 -0
  21. onvif/services/events/subscription.py +21 -0
  22. onvif/services/imaging.py +62 -0
  23. onvif/services/media.py +424 -0
  24. onvif/services/media2.py +310 -0
  25. onvif/services/provisioning.py +50 -0
  26. onvif/services/ptz.py +187 -0
  27. onvif/services/receiver.py +46 -0
  28. onvif/services/recording.py +136 -0
  29. onvif/services/replay.py +30 -0
  30. onvif/services/schedule.py +82 -0
  31. onvif/services/search.py +149 -0
  32. onvif/services/security/advancedsecurity.py +19 -0
  33. onvif/services/security/authorizationserver.py +31 -0
  34. onvif/services/security/dot1x.py +42 -0
  35. onvif/services/security/jwt.py +21 -0
  36. onvif/services/security/keystore.py +208 -0
  37. onvif/services/security/mediasigning.py +30 -0
  38. onvif/services/security/tlsserver.py +82 -0
  39. onvif/services/thermal.py +54 -0
  40. onvif/services/uplink.py +28 -0
  41. onvif/utils/__init__.py +4 -0
  42. onvif/utils/exceptions.py +33 -0
  43. onvif/utils/wsdl.py +297 -0
  44. onvif/wsdl/ver10/accesscontrol/wsdl/index.html +7 -0
  45. onvif/wsdl/ver10/accessrules/wsdl/accessrules.wsdl +702 -0
  46. onvif/wsdl/ver10/accessrules/wsdl/index.html +7 -0
  47. onvif/wsdl/ver10/actionengine.wsdl +1265 -0
  48. onvif/wsdl/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl +4159 -0
  49. onvif/wsdl/ver10/advancedsecurity/wsdl/index.html +7 -0
  50. onvif/wsdl/ver10/analyticsdevice.wsdl +709 -0
  51. onvif/wsdl/ver10/appmgmt/wsdl/appmgmt.wsdl +502 -0
  52. onvif/wsdl/ver10/appmgmt/wsdl/index.html +7 -0
  53. onvif/wsdl/ver10/authenticationbehavior/wsdl/authenticationbehavior.wsdl +1382 -0
  54. onvif/wsdl/ver10/authenticationbehavior/wsdl/index.html +7 -0
  55. onvif/wsdl/ver10/credential/wsdl/credential.wsdl +2018 -0
  56. onvif/wsdl/ver10/credential/wsdl/index.html +7 -0
  57. onvif/wsdl/ver10/device/wsdl/devicemgmt.wsdl +4623 -0
  58. onvif/wsdl/ver10/deviceio.wsdl +1414 -0
  59. onvif/wsdl/ver10/display/display.wsdl +383 -0
  60. onvif/wsdl/ver10/display/wsdl/index.htm +383 -0
  61. onvif/wsdl/ver10/display.wsdl +521 -0
  62. onvif/wsdl/ver10/doorcontrol/wsdl/index.html +7 -0
  63. onvif/wsdl/ver10/events/wsdl/bw-2-vs-mod.wsdl +449 -0
  64. onvif/wsdl/ver10/events/wsdl/event-vs.wsdl +947 -0
  65. onvif/wsdl/ver10/events/wsdl/event.wsdl +947 -0
  66. onvif/wsdl/ver10/events/wsdl/index.html +7 -0
  67. onvif/wsdl/ver10/federatedsearch.wsdl +344 -0
  68. onvif/wsdl/ver10/media/wsdl/media.wsdl +3684 -0
  69. onvif/wsdl/ver10/pacs/accesscontrol.wsdl +1942 -0
  70. onvif/wsdl/ver10/pacs/doorcontrol.wsdl +1792 -0
  71. onvif/wsdl/ver10/pacs/types.xsd +181 -0
  72. onvif/wsdl/ver10/provisioning/wsdl/provisioning.wsdl +588 -0
  73. onvif/wsdl/ver10/receiver.wsdl +398 -0
  74. onvif/wsdl/ver10/recording.wsdl +1231 -0
  75. onvif/wsdl/ver10/replay.wsdl +221 -0
  76. onvif/wsdl/ver10/schedule/wsdl/index.html +7 -0
  77. onvif/wsdl/ver10/schedule/wsdl/schedule.wsdl +1383 -0
  78. onvif/wsdl/ver10/schema/common.xsd +422 -0
  79. onvif/wsdl/ver10/schema/metadatastream.xsd +520 -0
  80. onvif/wsdl/ver10/schema/onvif.xsd +9251 -0
  81. onvif/wsdl/ver10/search.wsdl +882 -0
  82. onvif/wsdl/ver10/thermal/wsdl/index.html +7 -0
  83. onvif/wsdl/ver10/thermal/wsdl/thermal.wsdl +777 -0
  84. onvif/wsdl/ver10/topics/topicns.xml +13 -0
  85. onvif/wsdl/ver10/uplink/wsdl/index.html +7 -0
  86. onvif/wsdl/ver10/uplink/wsdl/uplink.wsdl +256 -0
  87. onvif/wsdl/ver20/analytics/humanbody.xsd +490 -0
  88. onvif/wsdl/ver20/analytics/humanface.xsd +501 -0
  89. onvif/wsdl/ver20/analytics/index.html +7 -0
  90. onvif/wsdl/ver20/analytics/radiometry.xsd +389 -0
  91. onvif/wsdl/ver20/analytics/rules.xsd +127 -0
  92. onvif/wsdl/ver20/analytics/wsdl/analytics.wsdl +757 -0
  93. onvif/wsdl/ver20/analytics/wsdl/index.html +7 -0
  94. onvif/wsdl/ver20/imaging/wsdl/imaging.wsdl +603 -0
  95. onvif/wsdl/ver20/media/wsdl/index.html +7 -0
  96. onvif/wsdl/ver20/media/wsdl/media.wsdl +2862 -0
  97. onvif/wsdl/ver20/ptz/wsdl/ptz.wsdl +1450 -0
  98. onvif/wsdl/ver20/util/federated_search_documentation.html +1647 -0
  99. onvif/wsdl/ver20/util/fedsearch-docu-viewer.xsl +8 -0
  100. onvif/wsdl/ver20/util/onvif-wsdl-viewer.xsl +2580 -0
  101. onvif/wsdl/ver20/util/operationIndex.html +97 -0
  102. onvif_python-0.0.1.dist-info/METADATA +381 -0
  103. onvif_python-0.0.1.dist-info/RECORD +106 -0
  104. onvif_python-0.0.1.dist-info/WHEEL +5 -0
  105. onvif_python-0.0.1.dist-info/licenses/LICENSE.md +21 -0
  106. onvif_python-0.0.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,105 @@
1
+ # onvif/services/accesscontrol.py
2
+
3
+ from ..operator import ONVIFOperator
4
+ from ..utils import ONVIFWSDL
5
+
6
+
7
+ class AccessControl:
8
+ def __init__(self, xaddr=None, **kwargs):
9
+ definition = ONVIFWSDL.get_definition("accesscontrol")
10
+ self.operator = ONVIFOperator(
11
+ definition["path"],
12
+ binding=f"{{{definition['namespace']}}}{definition['binding']}",
13
+ service_path="AccessControl", # fallback
14
+ xaddr=xaddr,
15
+ **kwargs,
16
+ )
17
+
18
+ def GetServiceCapabilities(self):
19
+ return self.operator.call("GetServiceCapabilities")
20
+
21
+ def GetAccessPointInfoList(self, Limit=None, StartReference=None):
22
+ return self.operator.call(
23
+ "GetAccessPointInfoList", Limit=Limit, StartReference=StartReference
24
+ )
25
+
26
+ def GetAccessPointInfo(self, Token):
27
+ return self.operator.call("GetAccessPointInfo", Token=Token)
28
+
29
+ def GetAccessPointList(self, Limit=None, StartReference=None):
30
+ return self.operator.call(
31
+ "GetAccessPointList", Limit=Limit, StartReference=StartReference
32
+ )
33
+
34
+ def GetAccessPoints(self, Token):
35
+ return self.operator.call("GetAccessPoints", Token=Token)
36
+
37
+ def CreateAccessPoint(self, AccessPoint):
38
+ return self.operator.call("CreateAccessPoint", AccessPoint=AccessPoint)
39
+
40
+ def SetAccessPoint(self, AccessPoint):
41
+ return self.operator.call("SetAccessPoint", AccessPoint=AccessPoint)
42
+
43
+ def ModifyAccessPoint(self, AccessPoint):
44
+ return self.operator.call("ModifyAccessPoint", AccessPoint=AccessPoint)
45
+
46
+ def DeleteAccessPoint(self, Token):
47
+ return self.operator.call("DeleteAccessPoint", Token=Token)
48
+
49
+ def SetAccessPointAuthenticationProfile(self, Token, AuthenticationProfileToken):
50
+ return self.operator.call(
51
+ "SetAccessPointAuthenticationProfile",
52
+ Token=Token,
53
+ AuthenticationProfileToken=AuthenticationProfileToken,
54
+ )
55
+
56
+ def DeleteAccessPointAuthenticationProfile(self, Token):
57
+ return self.operator.call("DeleteAccessPointAuthenticationProfile", Token=Token)
58
+
59
+ def GetAreaInfoList(self, Limit=None, StartReference=None):
60
+ return self.operator.call(
61
+ "GetAreaInfoList", Limit=Limit, StartReference=StartReference
62
+ )
63
+
64
+ def GetAreaInfo(self, Token):
65
+ return self.operator.call("GetAreaInfo", Token=Token)
66
+
67
+ def GetAreaList(self, Limit=None, StartReference=None):
68
+ return self.operator.call(
69
+ "GetAreaList", Limit=Limit, StartReference=StartReference
70
+ )
71
+
72
+ def GetAreas(self, Token):
73
+ return self.operator.call("GetAreas", Token=Token)
74
+
75
+ def CreateArea(self, Area):
76
+ return self.operator.call("CreateArea", Area=Area)
77
+
78
+ def SetArea(self, Area):
79
+ return self.operator.call("SetArea", Area=Area)
80
+
81
+ def ModifyArea(self, Area):
82
+ return self.operator.call("ModifyArea", Area=Area)
83
+
84
+ def DeleteArea(self, Token):
85
+ return self.operator.call("DeleteArea", Token=Token)
86
+
87
+ def GetAccessPointState(self, Token):
88
+ return self.operator.call("GetAccessPointState", Token=Token)
89
+
90
+ def EnableAccessPoint(self, Token):
91
+ return self.operator.call("EnableAccessPoint", Token=Token)
92
+
93
+ def DisableAccessPoint(self, Token):
94
+ return self.operator.call("DisableAccessPoint", Token=Token)
95
+
96
+ def ExternalAuthorization(
97
+ self, AccessPointToken, Decision, CredentialToken=None, Reason=None
98
+ ):
99
+ return self.operator.call(
100
+ "ExternalAuthorization",
101
+ AccessPointToken=AccessPointToken,
102
+ CredentialToken=CredentialToken,
103
+ Reason=Reason,
104
+ Decision=Decision,
105
+ )
@@ -0,0 +1,47 @@
1
+ # onvif/services/accessrules.py
2
+
3
+ from ..operator import ONVIFOperator
4
+ from ..utils import ONVIFWSDL
5
+
6
+
7
+ class AccessRules:
8
+ def __init__(self, xaddr=None, **kwargs):
9
+ definition = ONVIFWSDL.get_definition("accessrules")
10
+ self.operator = ONVIFOperator(
11
+ definition["path"],
12
+ binding=f"{{{definition['namespace']}}}{definition['binding']}",
13
+ service_path="AccessRules", # fallback
14
+ xaddr=xaddr,
15
+ **kwargs,
16
+ )
17
+
18
+ def GetServiceCapabilities(self):
19
+ return self.operator.call("GetServiceCapabilities")
20
+
21
+ def GetAccessProfileInfo(self, Token):
22
+ return self.operator.call("GetAccessProfileInfo", Token=Token)
23
+
24
+ def GetAccessProfileInfoList(self, Limit=None, StartReference=None):
25
+ return self.operator.call(
26
+ "GetAccessProfileInfoList", Limit=Limit, StartReference=StartReference
27
+ )
28
+
29
+ def GetAccessProfiles(self, Token):
30
+ return self.operator.call("GetAccessProfiles", Token=Token)
31
+
32
+ def GetAccessProfileList(self, Limit=None, StartReference=None):
33
+ return self.operator.call(
34
+ "GetAccessProfileList", Limit=Limit, StartReference=StartReference
35
+ )
36
+
37
+ def CreateAccessProfile(self, AccessProfile):
38
+ return self.operator.call("CreateAccessProfile", AccessProfile=AccessProfile)
39
+
40
+ def ModifyAccessProfile(self, AccessProfile):
41
+ return self.operator.call("ModifyAccessProfile", AccessProfile=AccessProfile)
42
+
43
+ def SetAccessProfile(self, AccessProfile):
44
+ return self.operator.call("SetAccessProfile", AccessProfile=AccessProfile)
45
+
46
+ def DeleteAccessProfile(self, Token):
47
+ return self.operator.call("DeleteAccessProfile", Token=Token)
@@ -0,0 +1,46 @@
1
+ # onvif/services/actionengine.py
2
+
3
+ from ..operator import ONVIFOperator
4
+ from ..utils import ONVIFWSDL
5
+
6
+
7
+ class ActionEngine:
8
+ def __init__(self, xaddr=None, **kwargs):
9
+ definition = ONVIFWSDL.get_definition("actionengine")
10
+ self.operator = ONVIFOperator(
11
+ definition["path"],
12
+ binding=f"{{{definition['namespace']}}}{definition['binding']}",
13
+ service_path="ActionEngine", # fallback
14
+ xaddr=xaddr,
15
+ **kwargs,
16
+ )
17
+
18
+ def GetServiceCapabilities(self):
19
+ return self.operator.call("GetServiceCapabilities")
20
+
21
+ def GetSupportedActions(self):
22
+ return self.operator.call("GetSupportedActions")
23
+
24
+ def GetActions(self):
25
+ return self.operator.call("GetActions")
26
+
27
+ def CreateActions(self, Action):
28
+ return self.operator.call("CreateActions", Action=Action)
29
+
30
+ def DeleteActions(self, Token):
31
+ return self.operator.call("DeleteActions", Token=Token)
32
+
33
+ def ModifyActions(self, Action):
34
+ return self.operator.call("ModifyActions", Action=Action)
35
+
36
+ def GetActionTriggers(self):
37
+ return self.operator.call("GetActionTriggers")
38
+
39
+ def CreateActionTriggers(self, ActionTrigger):
40
+ return self.operator.call("CreateActionTriggers", ActionTrigger=ActionTrigger)
41
+
42
+ def DeleteActionTriggers(self, Token):
43
+ return self.operator.call("DeleteActionTriggers", Token=Token)
44
+
45
+ def ModifyActionTriggers(self, ActionTrigger):
46
+ return self.operator.call("ModifyActionTriggers", ActionTrigger=ActionTrigger)
@@ -0,0 +1,60 @@
1
+ # onvif/services/analytics/analytics.py
2
+
3
+ from ...operator import ONVIFOperator
4
+ from ...utils import ONVIFWSDL
5
+
6
+
7
+ class Analytics:
8
+ def __init__(self, xaddr=None, **kwargs):
9
+ definition = ONVIFWSDL.get_definition("analytics", "ver20")
10
+ self.operator = ONVIFOperator(
11
+ definition["path"],
12
+ binding=f"{{{definition['namespace']}}}{definition['binding']}",
13
+ service_path="Analytics", # fallback
14
+ xaddr=xaddr,
15
+ **kwargs,
16
+ )
17
+
18
+ def GetServiceCapabilities(self):
19
+ return self.operator.call("GetServiceCapabilities")
20
+
21
+ def GetSupportedAnalyticsModules(self, ConfigurationToken):
22
+ return self.operator.call(
23
+ "GetSupportedAnalyticsModules", ConfigurationToken=ConfigurationToken
24
+ )
25
+
26
+ def CreateAnalyticsModules(self, ConfigurationToken, AnalyticsModule):
27
+ return self.operator.call(
28
+ "CreateAnalyticsModules",
29
+ ConfigurationToken=ConfigurationToken,
30
+ AnalyticsModule=AnalyticsModule,
31
+ )
32
+
33
+ def DeleteAnalyticsModules(self, ConfigurationToken, AnalyticsModuleName):
34
+ return self.operator.call(
35
+ "DeleteAnalyticsModules",
36
+ ConfigurationToken=ConfigurationToken,
37
+ AnalyticsModuleName=AnalyticsModuleName,
38
+ )
39
+
40
+ def GetAnalyticsModules(self, ConfigurationToken):
41
+ return self.operator.call(
42
+ "GetAnalyticsModules", ConfigurationToken=ConfigurationToken
43
+ )
44
+
45
+ def GetAnalyticsModuleOptions(self, ConfigurationToken, Type=None):
46
+ return self.operator.call(
47
+ "GetAnalyticsModuleOptions",
48
+ Type=Type,
49
+ ConfigurationToken=ConfigurationToken,
50
+ )
51
+
52
+ def ModifyAnalyticsModules(self, ConfigurationToken, AnalyticsModule):
53
+ return self.operator.call(
54
+ "ModifyAnalyticsModules",
55
+ ConfigurationToken=ConfigurationToken,
56
+ AnalyticsModule=AnalyticsModule,
57
+ )
58
+
59
+ def GetSupportedMetadata(self, Type=None):
60
+ return self.operator.call("GetSupportedMetadata", Type=Type)
@@ -0,0 +1,44 @@
1
+ # onvif/services/analytics/ruleengine.py
2
+
3
+ from ...operator import ONVIFOperator
4
+ from ...utils import ONVIFWSDL
5
+
6
+
7
+ class RuleEngine:
8
+ def __init__(self, xaddr=None, **kwargs):
9
+ definition = ONVIFWSDL.get_definition("ruleengine", "ver20")
10
+ self.operator = ONVIFOperator(
11
+ definition["path"],
12
+ binding=f"{{{definition['namespace']}}}{definition['binding']}",
13
+ service_path="Analytics", # fallback
14
+ xaddr=xaddr,
15
+ **kwargs,
16
+ )
17
+
18
+ def GetSupportedRules(self, ConfigurationToken):
19
+ return self.operator.call(
20
+ "GetSupportedRules", ConfigurationToken=ConfigurationToken
21
+ )
22
+
23
+ def CreateRules(self, ConfigurationToken, Rule):
24
+ return self.operator.call(
25
+ "CreateRules", ConfigurationToken=ConfigurationToken, Rule=Rule
26
+ )
27
+
28
+ def DeleteRules(self, ConfigurationToken, RuleName):
29
+ return self.operator.call(
30
+ "DeleteRules", ConfigurationToken=ConfigurationToken, RuleName=RuleName
31
+ )
32
+
33
+ def GetRules(self, ConfigurationToken):
34
+ return self.operator.call("GetRules", ConfigurationToken=ConfigurationToken)
35
+
36
+ def GetRuleOptions(self, ConfigurationToken, RuleType=None):
37
+ return self.operator.call(
38
+ "GetRuleOptions", RuleType=RuleType, ConfigurationToken=ConfigurationToken
39
+ )
40
+
41
+ def ModifyRules(self, ConfigurationToken, Rule):
42
+ return self.operator.call(
43
+ "ModifyRules", ConfigurationToken=ConfigurationToken, Rule=Rule
44
+ )
@@ -0,0 +1,122 @@
1
+ # onvif/services/analyticsdevice.py
2
+
3
+ from ..operator import ONVIFOperator
4
+ from ..utils import ONVIFWSDL
5
+
6
+
7
+ class AnalyticsDevice:
8
+ def __init__(self, xaddr=None, **kwargs):
9
+ # NOTE (ONVIF 18.12):
10
+ # The AnalyticsDevice service (AnalyticsDeviceBinding) has been marked as
11
+ # obsolete since ONVIF Release 18.12. Its functionality has largely been
12
+ # merged into the Analytics service and, in some cases, Media2.
13
+ #
14
+ # This class is kept here only for backward compatibility with older devices
15
+ # (pre-2019) that may still expose an AnalyticsDevice XAddr.
16
+ #
17
+ # In modern ONVIF-compliant devices, you should prefer using the Analytics
18
+ # service (`onvif/services/analytics.py`). If the device does not advertise
19
+ # an AnalyticsDevice capability in GetCapabilities → Extension, then calling
20
+ # this class will result in SOAP faults.
21
+ #
22
+ # References:
23
+ # - ONVIF Release 18.12 (December 2018) Release Notes
24
+ # - AnalyticsDeviceBinding (ver10/analyticsdevice.wsdl)
25
+ # - Successor: Analytics Service (ver20/analytics/wsdl/analytics.wsdl)
26
+ # - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/analyticsdevice.wsdl
27
+
28
+ definition = ONVIFWSDL.get_definition("analyticsdevice")
29
+ self.operator = ONVIFOperator(
30
+ definition["path"],
31
+ binding=f"{{{definition['namespace']}}}{definition['binding']}",
32
+ service_path="AnalyticsDevice", # fallback
33
+ xaddr=xaddr,
34
+ **kwargs,
35
+ )
36
+
37
+ def GetServiceCapabilities(self):
38
+ return self.operator.call("GetServiceCapabilities")
39
+
40
+ def DeleteAnalyticsEngineControl(self, ConfigurationToken):
41
+ return self.operator.call(
42
+ "DeleteAnalyticsEngineControl", ConfigurationToken=ConfigurationToken
43
+ )
44
+
45
+ def CreateAnalyticsEngineControl(self, Configuration):
46
+ return self.operator.call(
47
+ "CreateAnalyticsEngineControl", Configuration=Configuration
48
+ )
49
+
50
+ def SetAnalyticsEngineControl(self, SetAnalyticsEngineControl, ForcePersistence):
51
+ return self.operator.call(
52
+ "SetAnalyticsEngineControl",
53
+ SetAnalyticsEngineControl=SetAnalyticsEngineControl,
54
+ ForcePersistence=ForcePersistence,
55
+ )
56
+
57
+ def GetAnalyticsEngineControl(self, ConfigurationToken):
58
+ return self.operator.call(
59
+ "GetAnalyticsEngineControl", ConfigurationToken=ConfigurationToken
60
+ )
61
+
62
+ def GetAnalyticsEngineControls(self):
63
+ return self.operator.call("GetAnalyticsEngineControls")
64
+
65
+ def GetAnalyticsEngine(self, ConfigurationToken):
66
+ return self.operator.call(
67
+ "GetAnalyticsEngine", ConfigurationToken=ConfigurationToken
68
+ )
69
+
70
+ def GetAnalyticsEngines(self):
71
+ return self.operator.call("GetAnalyticsEngines")
72
+
73
+ def SetVideoAnalyticsConfiguration(self, Configuration, ForcePersistence):
74
+ return self.operator.call(
75
+ "SetVideoAnalyticsConfiguration",
76
+ Configuration=Configuration,
77
+ ForcePersistence=ForcePersistence,
78
+ )
79
+
80
+ def SetAnalyticsEngineInput(self, Configuration, InputToken):
81
+ return self.operator.call(
82
+ "SetAnalyticsEngineInput",
83
+ Configuration=Configuration,
84
+ InputToken=InputToken,
85
+ )
86
+
87
+ def GetAnalyticsEngineInput(self, ConfigurationToken):
88
+ return self.operator.call(
89
+ "GetAnalyticsEngineInput", ConfigurationToken=ConfigurationToken
90
+ )
91
+
92
+ def GetAnalyticsEngineInputs(self):
93
+ return self.operator.call("GetAnalyticsEngineInputs")
94
+
95
+ def GetAnalyticsDeviceStreamUri(self, StreamSetup, AnalyticsEngineControlToken):
96
+ return self.operator.call(
97
+ "GetAnalyticsDeviceStreamUri",
98
+ StreamSetup=StreamSetup,
99
+ AnalyticsEngineControlToken=AnalyticsEngineControlToken,
100
+ )
101
+
102
+ def GetVideoAnalyticsConfiguration(self, ConfigurationToken):
103
+ return self.operator.call(
104
+ "GetVideoAnalyticsConfiguration", ConfigurationToken=ConfigurationToken
105
+ )
106
+
107
+ def CreateAnalyticsEngineInputs(self, Configuration, ForcePersistence):
108
+ return self.operator.call(
109
+ "CreateAnalyticsEngineInputs",
110
+ Configuration=Configuration,
111
+ ForcePersistence=ForcePersistence,
112
+ )
113
+
114
+ def DeleteAnalyticsEngineInputs(self, ConfigurationToken):
115
+ return self.operator.call(
116
+ "DeleteAnalyticsEngineInputs", ConfigurationToken=ConfigurationToken
117
+ )
118
+
119
+ def GetAnalyticsState(self, AnalyticsEngineControlToken):
120
+ return self.operator.call(
121
+ "GetAnalyticsState", AnalyticsEngineControlToken=AnalyticsEngineControlToken
122
+ )
@@ -0,0 +1,40 @@
1
+ # onvif/services/appmgmt.py
2
+
3
+ from ..operator import ONVIFOperator
4
+ from ..utils import ONVIFWSDL
5
+
6
+
7
+ class AppManagement:
8
+ def __init__(self, xaddr=None, **kwargs):
9
+ definition = ONVIFWSDL.get_definition("appmgmt")
10
+ self.operator = ONVIFOperator(
11
+ definition["path"],
12
+ binding=f"{{{definition['namespace']}}}{definition['binding']}",
13
+ service_path="AppManagement", # fallback
14
+ xaddr=xaddr,
15
+ **kwargs,
16
+ )
17
+
18
+ def GetServiceCapabilities(self):
19
+ return self.operator.call("GetServiceCapabilities")
20
+
21
+ def Uninstall(self, AppID):
22
+ return self.operator.call("Uninstall", AppID=AppID)
23
+
24
+ def GetInstalledApps(self):
25
+ return self.operator.call("GetInstalledApps")
26
+
27
+ def GetAppsInfo(self, AppID=None):
28
+ return self.operator.call("GetAppsInfo", AppID=AppID)
29
+
30
+ def Activate(self, AppID):
31
+ return self.operator.call("Activate", AppID=AppID)
32
+
33
+ def Deactivate(self, AppID):
34
+ return self.operator.call("Deactivate", AppID=AppID)
35
+
36
+ def InstallLicense(self, License, AppID=None):
37
+ return self.operator.call("InstallLicense", AppID=AppID, License=License)
38
+
39
+ def GetDeviceId(self):
40
+ return self.operator.call("GetDeviceId")
@@ -0,0 +1,83 @@
1
+ # onvif/services/authenticationbehavior.py
2
+
3
+ from ..operator import ONVIFOperator
4
+ from ..utils import ONVIFWSDL
5
+
6
+
7
+ class AuthenticationBehavior:
8
+ def __init__(self, xaddr=None, **kwargs):
9
+ definition = ONVIFWSDL.get_definition("authenticationbehavior")
10
+ self.operator = ONVIFOperator(
11
+ definition["path"],
12
+ binding=f"{{{definition['namespace']}}}{definition['binding']}",
13
+ service_path="AuthenticationBehavior", # fallback
14
+ xaddr=xaddr,
15
+ **kwargs,
16
+ )
17
+
18
+ def GetServiceCapabilities(self):
19
+ return self.operator.call("GetServiceCapabilities")
20
+
21
+ def GetAuthenticationProfileInfo(self, Token):
22
+ return self.operator.call("GetAuthenticationProfileInfo", Token=Token)
23
+
24
+ def GetAuthenticationProfileInfoList(self, Limit=None, StartReference=None):
25
+ return self.operator.call(
26
+ "GetAuthenticationProfileInfoList",
27
+ Limit=Limit,
28
+ StartReference=StartReference,
29
+ )
30
+
31
+ def GetAuthenticationProfiles(self, Token):
32
+ return self.operator.call("GetAuthenticationProfiles", Token=Token)
33
+
34
+ def GetAuthenticationProfileList(self, Limit=None, StartReference=None):
35
+ return self.operator.call(
36
+ "GetAuthenticationProfileList", Limit=Limit, StartReference=StartReference
37
+ )
38
+
39
+ def CreateAuthenticationProfile(self, AuthenticationProfile):
40
+ return self.operator.call(
41
+ "CreateAuthenticationProfile", AuthenticationProfile=AuthenticationProfile
42
+ )
43
+
44
+ def SetAuthenticationProfile(self, AuthenticationProfile):
45
+ return self.operator.call(
46
+ "SetAuthenticationProfile", AuthenticationProfile=AuthenticationProfile
47
+ )
48
+
49
+ def ModifyAuthenticationProfile(self, AuthenticationProfile):
50
+ return self.operator.call(
51
+ "ModifyAuthenticationProfile", AuthenticationProfile=AuthenticationProfile
52
+ )
53
+
54
+ def DeleteAuthenticationProfile(self, Token):
55
+ return self.operator.call("DeleteAuthenticationProfile", Token=Token)
56
+
57
+ def GetSecurityLevelInfo(self, Token):
58
+ return self.operator.call("GetSecurityLevelInfo", Token=Token)
59
+
60
+ def GetSecurityLevelInfoList(self, Limit=None, StartReference=None):
61
+ return self.operator.call(
62
+ "GetSecurityLevelInfoList", Limit=Limit, StartReference=StartReference
63
+ )
64
+
65
+ def GetSecurityLevels(self, Token):
66
+ return self.operator.call("GetSecurityLevels", Token=Token)
67
+
68
+ def GetSecurityLevelList(self, Limit=None, StartReference=None):
69
+ return self.operator.call(
70
+ "GetSecurityLevelList", Limit=Limit, StartReference=StartReference
71
+ )
72
+
73
+ def CreateSecurityLevel(self, SecurityLevel):
74
+ return self.operator.call("CreateSecurityLevel", SecurityLevel=SecurityLevel)
75
+
76
+ def SetSecurityLevel(self, SecurityLevel):
77
+ return self.operator.call("SetSecurityLevel", SecurityLevel=SecurityLevel)
78
+
79
+ def ModifySecurityLevel(self, SecurityLevel):
80
+ return self.operator.call("ModifySecurityLevel", SecurityLevel=SecurityLevel)
81
+
82
+ def DeleteSecurityLevel(self, Token):
83
+ return self.operator.call("DeleteSecurityLevel", Token=Token)