parent
1660b1eb3a
commit
c548a789a8
@ -0,0 +1,23 @@
|
||||
""" all geroide exception """
|
||||
|
||||
class Error(Exception):
|
||||
"""Base class for exceptions in this module."""
|
||||
pass
|
||||
|
||||
class LoginException(Error):
|
||||
"""loggin exception"""
|
||||
def __init__(self, expression, message):
|
||||
self.expression = expression
|
||||
self.message = message
|
||||
|
||||
class UnauthorizedException(Error):
|
||||
"""loggin exception"""
|
||||
def __init__(self, expression, message):
|
||||
self.expression = expression
|
||||
self.message = message
|
||||
|
||||
class SeverException(Error):
|
||||
"""loggin exception"""
|
||||
def __init__(self, expression, message):
|
||||
self.expression = expression
|
||||
self.message = message
|
@ -0,0 +1,120 @@
|
||||
""" Georide socket-io implementation """
|
||||
import logging
|
||||
import socketio
|
||||
|
||||
from georideapilib.api import GEORIDE_API_HOST
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
_LOGGER.setLevel(logging.DEBUG)
|
||||
# create console handler and set level to debug
|
||||
CH = logging.StreamHandler()
|
||||
CH.setLevel(logging.DEBUG)
|
||||
|
||||
sio = socketio.Client(reconnection=True)
|
||||
|
||||
@sio.on('connect')
|
||||
def on_connect():
|
||||
""" event: connected """
|
||||
_LOGGER.debug('GeoRide socket connected')
|
||||
|
||||
@sio.on('disconnect')
|
||||
def on_disconnect():
|
||||
""" event: disconnected """
|
||||
_LOGGER.debug('GeoRide socket disconnected')
|
||||
|
||||
|
||||
class GeorideSocket():
|
||||
"""docstring for GeorideSocket"""
|
||||
def __init__(self):
|
||||
self._on_message_callback = None
|
||||
self._on_device_callback = None
|
||||
self._on_position_callback = None
|
||||
self._on_alarm_callback = None
|
||||
self._on_refresh_tracker_callback = None
|
||||
self._on_locked_callback = None
|
||||
self._initialised = False
|
||||
|
||||
|
||||
def subscribe_on_message(self, callback_function):
|
||||
"""event: tells you authentication informations."""
|
||||
self._on_message_callback = callback_function
|
||||
|
||||
def subscribe_device(self, callback_function):
|
||||
"""event: tells you when a device is added to the account."""
|
||||
self._on_device_callback = callback_function
|
||||
|
||||
def subscribe_position(self, callback_function):
|
||||
"""event: tells you when a device sent a position."""
|
||||
self._on_position_callback = callback_function
|
||||
|
||||
def subscribe_alarm(self, callback_function):
|
||||
"""event: tells you when a device trigger an alarm."""
|
||||
self._on_alarm_callback = callback_function
|
||||
|
||||
def subscribe_refresh_tracker(self, callback_function):
|
||||
"""event: tells you when you need to refresh your list of trackers"""
|
||||
self._on_refresh_tracker_callback = callback_function
|
||||
|
||||
def subscribe_locked(self, callback_function):
|
||||
"""event: tells you when a device has been locked or unlocked."""
|
||||
self._on_locked_callback = callback_function
|
||||
|
||||
|
||||
def init(self):
|
||||
"""init the context"""
|
||||
@sio.on('message')
|
||||
def on_message(data):
|
||||
""" on_message """
|
||||
_LOGGER.debug('Message recieved: %s', data)
|
||||
if self._on_message_callback is not None:
|
||||
self._on_message_callback()
|
||||
|
||||
@sio.on('device')
|
||||
def on_device(data):
|
||||
""" on_device """
|
||||
_LOGGER.debug('Device recieved: %s', data)
|
||||
if self._on_device_callback is not None:
|
||||
self._on_device_callback()
|
||||
|
||||
@sio.on('position')
|
||||
def on_position(data):
|
||||
""" on_position """
|
||||
_LOGGER.debug('Position recieved:%s', data)
|
||||
if self._on_position_callback is not None:
|
||||
self._on_position_callback()
|
||||
|
||||
@sio.on('alarm')
|
||||
def on_alarm(data):
|
||||
""" on_alarm """
|
||||
_LOGGER.debug('Alarm recieved: %s', data)
|
||||
if self._on_alarm_callback is not None:
|
||||
self._on_alarm_callback(data)
|
||||
|
||||
@sio.on('refreshTrackersInstruction')
|
||||
def on_refresh_tracker():
|
||||
""" on_refresh_tracker """
|
||||
_LOGGER.debug('Refresh tracker recieved')
|
||||
if self._on_refresh_tracker_callback is not None:
|
||||
self._on_refresh_tracker_callback()
|
||||
|
||||
@sio.on('lockedPosition')
|
||||
def on_locked(data):
|
||||
""" on_locked """
|
||||
_LOGGER.debug('Locked recieved: %s', data)
|
||||
if self._on_locked_callback is not None:
|
||||
self._on_locked_callback()
|
||||
|
||||
self._initialised = True
|
||||
|
||||
def connect(self, auth_token):
|
||||
""" connect to the georide socket"""
|
||||
_LOGGER.info("Start conection")
|
||||
if self._initialised is not False:
|
||||
sio.connect(GEORIDE_API_HOST, headers={'token': auth_token})
|
||||
sio.wait()
|
||||
else:
|
||||
_LOGGER.error("Please call init() before")
|
||||
|
||||
def disconnect(self):
|
||||
"""disconnect from the georide socket"""
|
||||
sio.disconnect()
|
Loading…
Reference in new issue