def do_activate(self): shell = self.object self.db = shell.props.db self.artcache = os.path.join(RB.user_cache_dir(), "album-art", "") self.art_store = RB.ExtDB(name="album-art") self.art_store.connect("added", self.art_added_cb) self.shell_player = shell.props.shell_player self.shell_player.connect("playing-song-changed", self.playing_song_changed_cb) self.shell_player.connect("playing-song-property-changed", self.playing_song_property_changed_cb) self.shell_player.connect("playing-changed", self.playing_changed_cb) self.shell_player.connect("elapsed-nano-changed", self.elapsed_nano_changed_cb) self.playing_song_changed_cb(self.shell_player, self.shell_player.get_playing_entry()) self.http_server = Soup.Server() self.http_server.add_handler(path="/art/", callback=self.http_art_cb) self.http_server.add_handler(path="/icon/", callback=self.http_icon_cb) self.http_server.add_handler(path="/entry/current/stream", callback=self.http_track_cb) self.http_server.add_handler(path="/css/", callback=self.http_static_css_cb) self.http_server.add_handler(path="/js/", callback=self.http_static_js_cb) self.http_server.add_websocket_handler("/ws/player", None, None, self.player_websocket_cb) self.http_server.add_handler(path="/", callback=self.http_root_cb) self.http_listen()
def create_companion_app_webserver(application, cache, content_db_conn, middlewares=None): '''Create a HTTP server with companion app routes.''' def _on_request_aborted(server, msg, *args): '''Signal handler for when a request is aborted. We'll look at the msg here and if there is an attached cancellable put there by cancellability_middleware then we can cancel it now. ''' del server del args cancellable = getattr(msg, 'cancellable', None) if cancellable is None: logging.debug('Message aborted without a cancellable') return cancellable.cancel() server = Soup.Server() for path, handler in create_companion_app_routes(content_db_conn).items(): server.add_handler( path, compose_middlewares(cache_middleware(cache), cancellability_middleware, handle_404_middleware(path), application_hold_middleware(application), *(middlewares or []), handler)) server.connect('request-aborted', _on_request_aborted) return server
def run(self, sessionbus=False): dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) if not sessionbus: bus = dbus.SystemBus() else: bus = dbus.SessionBus() bus_name = dbus.service.BusName(DBUS_BUS_NAME, bus) dbus.service.Object.__init__(self, bus_name, DBUS_OBJECT_PATH) self._loop = GObject.MainLoop() # Prepare changes listener self.webservice = Soup.Server() try: address = Gio.InetSocketAddress.new_from_string( get_ip_address(self.webservice_host), self.webservice_port) self.webservice.listen(address, 0) if self.webservice_port == 0: listeners = self.webservice.get_listeners() inetsocket = listeners[0].get_local_address() self.webservice_port = inetsocket.get_port() except Exception, e: logging.error('Error starting webservice: %s' % e) sys.exit(1)
def __init__(self, ipaddr, port, ssl=False): self.serverObj = Soup.Server() self.serverObj.listen( Gio.InetSocketAddress.new_from_string(ipaddr, port), 0)