58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
|
|
from time import sleep
|
|
|
|
from . import connection
|
|
from . import messages
|
|
|
|
class Session:
|
|
"""
|
|
Synchronous API session handler
|
|
|
|
:param host: Hostname or IP address of OMM
|
|
:param username: Username
|
|
:param password: Password
|
|
:param port: Port
|
|
:param ommsync: If True login as OMM-Sync client. Some operations in OMM-Sync mode might lead to destroy DECT paring.
|
|
:param connection_class: One of :class:`mitel_ommclient2.connection.Connection` or :class:`mitel_ommclient2.connection.SSLConnection`
|
|
|
|
Usage::
|
|
>>> s = Session("omm.local", "admin", "admin")
|
|
>>> s.request(mitel_ommclient2.messages.Ping())
|
|
"""
|
|
|
|
def __init__(self, host, username, password, port=None, ommsync=False, connection_class=None):
|
|
self.host = host
|
|
self.username = username
|
|
self.password = password
|
|
self.port = port
|
|
self.ommsync = ommsync
|
|
self.connection_class = connection_class
|
|
if self.connection_class is None:
|
|
self.connection_class = connection.Connection
|
|
|
|
self._connection = None
|
|
|
|
self._ensure_connection()
|
|
|
|
def _ensure_connection(self):
|
|
"""
|
|
Make sure we are connected and logged in
|
|
"""
|
|
|
|
if self._connection is None:
|
|
kwargs = {}
|
|
if self.port is not None:
|
|
kwargs["port"] = self.port
|
|
self._connection = self.connection_class(self.host, **kwargs)
|
|
|
|
self._connection.connect()
|
|
|
|
# Login
|
|
r = self.request(messages.Open(self.username, self.password, UserDeviceSyncClient=self.ommsync))
|
|
|
|
r.raise_on_error()
|
|
|
|
def request(self, request):
|
|
return self._connection.request(request)
|