formatting changes (blackening)

This commit is contained in:
2022-01-19 08:48:51 +00:00
parent bf13265261
commit 016df8873b
3 changed files with 216 additions and 262 deletions

View File

@ -10,108 +10,96 @@ import multiprocessing
import requests
import time
import logging
import simplejson as json
logger = logging.getLogger(__name__)
class Stream(object):
'''Allows you to connect to the Nimvelo (Sipcentric) streaming API
and register callbacks to your own functions.
'''
"""Allows you to connect to the Nimvelo (Sipcentric) streaming API
and register callbacks to your own functions.
"""
def __init__(self, parent):
def __init__(self, parent):
self.parent = parent
self.process = multiprocessing.Process(target=self.__run)
self.username = self.parent.username # Account username
self.password = self.parent.password # Account password
self.base = (
self.parent.base + "/stream"
) # Base streaming URL (default: https://pbx.sipcentric.com/api/v1/stream)
self.heartbeat = None
self.eventsCallback = None
self.incomingcallCallback = None
self.smsreceivedCallback = None
self.parent = parent
def __proccess(self, event):
event = json.loads(event)
logger.info("Processing event")
logger.debug(event)
self.process = multiprocessing.Process(target=self.__run)
if event["event"] == "heartbeat":
self.heartbeat = time.time()
return True
self.username = self.parent.username # Account username
self.password = self.parent.password # Account password
self.base = self.parent.base + '/stream' # Base streaming URL (default: https://pbx.sipcentric.com/api/v1/stream)
elif event["event"] == "incomingcall":
if self.incomingcallCallback:
self.incomingcallCallback(event["values"])
return True
self.heartbeat = None
elif event["event"] == "smsreceived":
if self.smsreceivedCallback:
self.smsreceivedCallback(event["values"])
return True
self.eventsCallback = None
self.incomingcallCallback = None
self.smsreceivedCallback = None
if self.eventsCallback:
self.eventsCallback(event)
return True
def __proccess(self, event):
def __run(self):
stream = "" # Used as a buffer for the stream data
data = False # Data is not JSON until we detect it
level = 0 # JSON object depth
event = json.loads(event)
r = requests.get(
self.base, verify=True, auth=(self.username, self.password), stream=True
)
logger.info('Processing event')
logger.debug(event)
for i in r.iter_content():
if i == "{":
stream += i
level += 1
data = True
if event['event'] == 'heartbeat':
elif i == "}":
stream += i
data = False
level -= 1
self.heartbeat = time.time()
return True
if level <= 0:
self.__proccess(stream)
stream = ""
elif event['event'] == 'incomingcall':
elif data is True:
stream += i
if self.incomingcallCallback:
self.incomingcallCallback(event['values'])
return True
def register(self, type, callback):
# Register a function to a callback in the class
if type == "incomingcall":
self.incomingcallCallback = callback
elif type == "smsreceived":
self.smsreceivedCallback = callback
elif type == "events":
self.eventsCallback = callback
elif event['event'] == 'smsreceived':
logger.info("Callback registered")
if self.smsreceivedCallback:
self.smsreceivedCallback(event['values'])
return True
def connect(self):
# Start multiprocessing thread
self.process.start()
logger.info("Connected")
if self.eventsCallback:
self.eventsCallback(event)
return True
def __run(self):
stream = '' # Used as a buffer for the stream data
data = False # Data is not JSON until we detect it
level = 0 # JSON object depth
r = requests.get(self.base, verify=True, auth=(self.username, self.password), stream=True)
for i in r.iter_content():
if i == '{':
stream += i
level += 1
data = True
elif i == '}':
stream += i
data = False
level -= 1
if level <= 0:
self.__proccess(stream)
stream = ''
elif data is True:
stream += i
def register(self, type, callback):
# Register a function to a callback in the class
if type == 'incomingcall':
self.incomingcallCallback = callback
elif type == 'smsreceived':
self.smsreceivedCallback = callback
elif type == 'events':
self.eventsCallback = callback
logger.info('Callback registered')
def connect(self):
# Start multiprocessing thread
self.process.start()
logger.info('Connected')
def disconnect(self):
# Terminate multiprocessing thread
self.process.terminate()
logger.info('Disconnected')
def disconnect(self):
# Terminate multiprocessing thread
self.process.terminate()
logger.info("Disconnected")