def __init__(self): LOG.debug("JellyfinClient initializing...") self.config = Config() self.http = HTTP(self) self.wsc = WSClient(self) self.auth = ConnectionManager(self) self.jellyfin = api.API(self.http) self.callback_ws = callback self.callback = callback
def run_server(): global running global queue sem.acquire() if running: print "Task already running!" sem.release() return app.control.purge() queue = Queue() running = True sem.release() pool = Pool() udp_server = AsyncUDPServer('', 6060, pool=pool) osc_message_parser = OSCMessageParser(pool=pool) connection_manager = ConnectionManager(pool=pool) udp_server.msg_handler = osc_message_parser.add_message osc_message_parser.device_msg_handler = connection_manager.send_osc_message udp_server.start() osc_message_parser.start() connection_manager.start() while running: try: msg = queue.get(timeout=1) except gevent.queue.Empty: continue if msg == "STOP": print "Received STOP" break if msg['type'] is "UP": connection_manager.update(msg['device']) if msg['type'] is "DEL": connection_manager.delete(msg['device']) udp_server.stop() osc_message_parser.stop() connection_manager.stop() pool.join()
class JellyfinClient(object): logged_in = False def __init__(self): LOG.debug("JellyfinClient initializing...") self.config = Config() self.http = HTTP(self) self.wsc = WSClient(self) self.auth = ConnectionManager(self) self.jellyfin = api.API(self.http) self.callback_ws = callback self.callback = callback def set_credentials(self, credentials=None): self.auth.credentials.set_credentials(credentials or {}) def get_credentials(self): return self.auth.credentials.get_credentials() def authenticate(self, credentials=None, options=None): self.set_credentials(credentials or {}) state = self.auth.connect(options or {}) if state['State'] == CONNECTION_STATE['SignedIn']: LOG.info("User is authenticated.") self.logged_in = True self.callback("ServerOnline", {'Id': self.auth.server_id}) state['Credentials'] = self.get_credentials() return state def start(self, websocket=False, keep_alive=True): if not self.logged_in: raise ValueError("User is not authenticated.") self.http.start_session() if keep_alive: self.http.keep_alive = True if websocket: self.start_wsc() def start_wsc(self): self.wsc.start() def stop(self): self.wsc.stop_client() self.http.stop_session()
class EmbyClient(object): logged_in = False def __init__(self): LOG.debug("EmbyClient initializing...") self.config = Config() self.http = HTTP(self) self.wsc = WSClient(self) self.auth = ConnectionManager(self) self.emby = api.API(self.http) self.callback_ws = callback self.callback = callback def set_credentials(self, credentials=None): self.auth.credentials.set_credentials(credentials or {}) def get_credentials(self): return self.auth.credentials.get_credentials() def authenticate(self, credentials=None, options=None): self.set_credentials(credentials or {}) state = self.auth.connect(options or {}) if state['State'] == CONNECTION_STATE['SignedIn']: LOG.info("User is authenticated.") self.logged_in = True self.callback("ServerOnline", {'Id': self['auth/server-id']}) state['Credentials'] = self.get_credentials() return state def start(self, websocket=False, keep_alive=True): if not self.logged_in: raise ValueError("User is not authenticated.") self.http.start_session() if keep_alive: self.http.keep_alive = True if websocket: self.start_wsc() def start_wsc(self): self.wsc.start() def stop(self): self.wsc.stop_client() self.http.stop_session() def __getitem__(self, key): if key.startswith('config'): return self.config[key.replace('config/', "", 1)] if "/" in key else self.config elif key.startswith('http'): return self.http.__shortcuts__(key.replace('http/', "", 1)) elif key.startswith('websocket'): return self.wsc.__shortcuts__(key.replace('websocket/', "", 1)) elif key.startswith('callback'): return self.callback_ws if 'ws' in key else self.callback elif key.startswith('auth'): return self.auth.__shortcuts__(key.replace('auth/', "", 1)) elif key.startswith('api'): return self.emby elif key == 'connected': return self.logged_in return