Thin wrapper around xmpp4r-simple, specifically designed to ease configuration of a jabber daemon and provide some added simplicity.
Deliver a message to the specified jid.
# File lib/daemon_kit/jabber.rb, line 19 def deliver( jid, message ) instance.connection.deliver( jid, message ) end
Use this instead of initializing, keeps it singleton
# File lib/daemon_kit/jabber.rb, line 24 def instance @instance ||= new @instance.startup! end
# File lib/daemon_kit/jabber.rb, line 84 def initialize options = DaemonKit::Config.load( 'jabber' ) @jabber_id = options.delete("jabber_id") @password = options.delete("password") @resource = options.delete("resource") || 'daemon_kit' @masters = options.delete("masters") || [] @supporters = options.delete("supporters") || [] raise ArgumentError if [ @jabber_id, @password ].any? { |a| a.nil? } end
# File lib/daemon_kit/jabber.rb, line 74 def presence_updates(&block) @presence_handler = block end
# File lib/daemon_kit/jabber.rb, line 47 def process_messages @message_handler ||= Proc.new { |m| DaemonKit.logger.info "Received message from #{m.from}: #{m.body}" } instance.valid_messages { |m| @message_handler.call(m) } end
# File lib/daemon_kit/jabber.rb, line 64 def process_subscriptions @subscription_handler ||= Proc.new { |friend,presence| DaemonKit.logger.debug "Received presence update from #{friend}: #{presence}" } instance.connection.subscription_requests { |friend,presence| @subscription_handler.call(friend,presence) } end
# File lib/daemon_kit/jabber.rb, line 53 def process_updates @presence_handler ||= Proc.new { |friend, old_presence, new_presence| DaemonKit.logger.debug "Received presence update: #{friend} went from #{old_presence} to #{new_presence}" } instance.connection.presence_updates { |friend, old_presence, new_presence| @presence_handler.call(friend, old_presence, new_presence) } end
# File lib/daemon_kit/jabber.rb, line 70 def received_messages(&block) @message_handler = block end
# File lib/daemon_kit/jabber.rb, line 133 def busy(&block) self.connection.status(:dnd, "Working...") yield self.connection.status(:chat, self.status_line ) end
# File lib/daemon_kit/jabber.rb, line 115 def contacts @masters + @supporters end
# File lib/daemon_kit/jabber.rb, line 110 def shutdown! DaemonKit.logger.warn "Disconnecting jabber connection" self.connection.disconnect end
# File lib/daemon_kit/jabber.rb, line 96 def startup! return self if @booted connect! setup_roster! DaemonKit.trap( 'INT', Proc.new { self.shutdown! } ) DaemonKit.trap( 'TERM', Proc.new { self.shutdown! } ) @booted = true self end
# File lib/daemon_kit/jabber.rb, line 139 def status_line "#{DaemonKit.configuration.daemon_name} ready for instructions" end
Generated with the Darkfish Rdoc Generator 2.