def get_events_since(self, start_time): type_check("start_time", start_time, int, float) if start_time < 0: raise ServerError("start_time must be a positive number.") events = self.events.get_events_since(start_time) for server in self.remote_irc_servers.itervalues(): events.extend(server._get_events_since(start_time)) return events
def server_disconnect(self, server_name, part_message=""): type_check("server_name", server_name, basestring) type_check("part_message", part_message, basestring) if server_name not in self.remote_irc_servers: raise ServerError('Server with name="%s" does not exist' % server_name) server = self.remote_irc_servers[server_name] server._disconnect(part_message) del self.remote_irc_servers[server_name] self.events.append(type="server_disconnect", server=server_name) return True
def _dispatch_channel(self, method, params): """Dispatch for xmlrpc methods starting with _channel.""" # Checks for methods existance an non-privacy are done in # RemoteIRCServer._dispatch_channel_method # Get server if len(params) <= 0: raise ServerError('Not enough arguments for method "%s".' % method) server_name = params[0] type_check("server_name", server_name, basestring) if server_name not in self.remote_irc_servers: raise ServerError('Server with name "%s" was not found' % server_name) server = self.remote_irc_servers[server_name] # Dispatch to corresponding server return server._dispatch_channel_method(method, params[1:])
def _dispatch_channel(self, method, params): '''Dispatch for xmlrpc methods starting with _channel.''' # Checks for methods existance an non-privacy are done in # RemoteIRCServer._dispatch_channel_method # Get server if len(params) <= 0: raise ServerError('Not enough arguments for method "%s".' % method) server_name = params[0] type_check("server_name", server_name, basestring) if server_name not in self.remote_irc_servers: raise ServerError('Server with name "%s" was not found' % server_name) server = self.remote_irc_servers[server_name] # Dispatch to corresponding server return server._dispatch_channel_method(method, params[1:])
def _dispatch_server(self, method, params): """Dispatch for xmlrpc methods starting with _server.""" # Check for method existence and callability server_method = method[len("server_") :] if not server_method.startswith("_") and callable(getattr(RemoteIRCServer, server_method, None)): # Get server if len(params) <= 0: raise ServerError('Not enough arguments for method "%s".' % method) server_name = params[0] type_check("server_name", server_name, basestring) if server_name not in self.remote_irc_servers: raise ServerError('Server with name "%s" was not found' % server_name) server = self.remote_irc_servers[server_name] # Call server method func = getattr(server, server_method) return func(*params[1:]) raise ServerError('Method "%s" not found.' % method)
def _dispatch_server(self, method, params): '''Dispatch for xmlrpc methods starting with _server.''' # Check for method existence and callability server_method = method[len("server_"):] if not server_method.startswith("_") and \ callable(getattr(RemoteIRCServer, server_method, None)): # Get server if len(params) <= 0: raise ServerError('Not enough arguments for method "%s".' % method) server_name = params[0] type_check("server_name", server_name, basestring) if server_name not in self.remote_irc_servers: raise ServerError('Server with name "%s" was not found' % server_name) server = self.remote_irc_servers[server_name] # Call server method func = getattr(server, server_method) return func(*params[1:]) raise ServerError('Method "%s" not found.' % method)
def server_connect(self, server_name, nick_name, uri, port=6667, password="", ssl=False, ipv6=False): type_check("server_name", server_name, basestring) type_check("nick_name", nick_name, basestring) type_check("uri", uri, basestring) type_check("port", port, int) type_check("password", password, basestring) type_check("ssl", ssl, bool) type_check("ipv6", ipv6, bool) if port < 0 or port > 65535: raise ServerError("port must be between 0 and 65535 inclusive.") if not password: password = None if server_name in self.server_list(): raise ServerError("Server with that name is already connected!") connection = self.irc_client.server() remote_server = RemoteIRCServer(connection, server_name, nick_name, uri, port, password, ssl, ipv6) self.remote_irc_servers[server_name] = remote_server self.events.append(type="server_connect", server=server_name) return True