diff --git a/mitel_ommclient2/__init__.py b/mitel_ommclient2/__init__.py index 463a3ec..3354ed7 100644 --- a/mitel_ommclient2/__init__.py +++ b/mitel_ommclient2/__init__.py @@ -3,6 +3,5 @@ from . import client from . import connection from . import messages -from . import session from .client import OMMClient2 diff --git a/mitel_ommclient2/client.py b/mitel_ommclient2/client.py index 154e3a8..d30da26 100644 --- a/mitel_ommclient2/client.py +++ b/mitel_ommclient2/client.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -from .session import Session +from .connection import Connection from . import messages class OMMClient2: @@ -13,29 +13,53 @@ class OMMClient2: :param host: Hostname or IP address of the OMM :param username: Username :param password: Password - :param session: A :class:`mitel_ommclient2.session.Session` object + :param port: Port where to access the API, if None, use default value + :param ommsync: If True login as OMM-Sync client. Some operations in OMM-Sync mode might lead to destroy DECT paring. Usage:: >>> c = OMMClient2("omm.local", "admin", "admin") >>> c.ping() - Use session for not implemented features:: + Use request to send custom messages:: - >>> r = s.session.request(mitel_ommclient2.messages.Ping()) - - To get more contol over the connection handling, initialize - :class:`mitel_ommclient2.session.Session` manually:: - - >>> s = mitel_ommclient2.session.Session("omm.local", "admin", "admin", port=12345) - >>> c = OMMClient2(session=s) + >>> r = s.request(mitel_ommclient2.messages.Ping()) """ - def __init__(self, host=None, username=None, password=None, session=None): - if session is None: - self.session = Session(host, username, password) - else: - self.session = session + def __init__(self, host, username, password, port=None, ommsync=False): + self._host = host + self._username = username + self._password = password + self._port = port + self._ommsync = ommsync + + # prepare connect arguments + kwargs = {} + if self._port is not None: + kwargs["port"] = self._port + + # Connect + self._connection = Connection(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): + """ + Sends a request, waits for response and returns response + + :param request: Request object + + Usage:: + + >>> r = c.request(mitel_ommclient2.messages.Ping()) + >>> r.name + 'PingResp' + """ + + return self._connection.request(request) def get_account(self, id): """ @@ -44,7 +68,7 @@ class OMMClient2: :param id: User id """ - r = self.session.request(messages.GetAccount(id)) + r = self.request(messages.GetAccount(id)) r.raise_on_error() if r.account is None: return None @@ -56,7 +80,7 @@ class OMMClient2: :param id: Device id """ - r = self.session.request(messages.GetPPDev(ppn)) + r = self.request(messages.GetPPDev(ppn)) r.raise_on_error() if r.pp is None: return None @@ -69,7 +93,7 @@ class OMMClient2: Returns `True` when response is received. """ - r = self.session.request(messages.Ping()) + r = self.request(messages.Ping()) if r.errCode is None: return True return False diff --git a/mitel_ommclient2/session.py b/mitel_ommclient2/session.py deleted file mode 100644 index bced4ae..0000000 --- a/mitel_ommclient2/session.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/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)