Class: DaemonKit::XMPP
- Inherits:
-
Object
- Object
- DaemonKit::XMPP
- Includes:
- Blather::DSL
- Defined in:
- lib/daemon_kit/xmpp.rb
Overview
Thin wrapper around the blather DSL
Class Method Summary collapse
Instance Method Summary collapse
- #become_available ⇒ Object
- #busy(message = nil, &block) ⇒ Object
- #configure_roster! ⇒ Object
- #contacts ⇒ Object
-
#initialize ⇒ XMPP
constructor
A new instance of XMPP.
- #run ⇒ Object
- #trusted?(message) ⇒ Boolean
- #valid_contact?(jid) ⇒ Boolean
Constructor Details
#initialize ⇒ XMPP
Returns a new instance of XMPP.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/daemon_kit/xmpp.rb', line 29 def initialize @config = DaemonKit::Config.load('xmpp') if @config.enable_logging Blather.logger = DaemonKit.logger end jid = if @config.resource "#{@config.jabber_id}/#{@config.resource}" else @config.jabber_id end # host & port allow nil, defaults to the jabber id host and default port # so if those keys are not present in the config, its ok. setup jid, @config.password, @config.host, @config.port when_ready do configure_roster! become_available end return if @config['require_master'] == false do |m| trusted?( m ) ? pass : halt end end |
Class Method Details
.run(&block) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/daemon_kit/xmpp.rb', line 12 def run( &block ) if Blather::VERSION < '0.8.0' DaemonKit.logger.warn "Blather version to old, please upgrade to 0.8.x" end DaemonKit.trap('INT') { ::EM.stop } DaemonKit.trap('TERM') { ::EM.stop } DaemonKit::EM.run { xmpp = new xmpp.instance_eval( &block ) xmpp.run } end |
Instance Method Details
#become_available ⇒ Object
82 83 84 |
# File 'lib/daemon_kit/xmpp.rb', line 82 def become_available set_status( :chat, "#{DaemonKit.configuration.daemon_name} is available" ) end |
#busy(message = nil, &block) ⇒ Object
102 103 104 105 106 107 108 |
# File 'lib/daemon_kit/xmpp.rb', line 102 def busy( = nil, &block ) set_status( :dnd, ) block.call become_available end |
#configure_roster! ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/daemon_kit/xmpp.rb', line 58 def configure_roster! DaemonKit.logger.debug 'Configuring roster' my_roster.each do |item| unless valid_contact?( item.jid ) DaemonKit.logger.debug "Removing #{item.jid} from roster" my_roster.delete( item.jid ) next end end contacts.each do |jid| DaemonKit.logger.debug "Adding #{jid} to roster" my_roster.add( Blather::JID.new( jid ) ) end my_roster.each do |item| item.subscription = :both item.ask = :subscribe end end |
#contacts ⇒ Object
90 91 92 |
# File 'lib/daemon_kit/xmpp.rb', line 90 def contacts @config.masters | ( @config.supporters || [] ) end |
#run ⇒ Object
98 99 100 |
# File 'lib/daemon_kit/xmpp.rb', line 98 def run client.run end |
#trusted?(message) ⇒ Boolean
86 87 88 |
# File 'lib/daemon_kit/xmpp.rb', line 86 def trusted?( ) @config.masters.include?( .from.stripped.to_s ) end |
#valid_contact?(jid) ⇒ Boolean
94 95 96 |
# File 'lib/daemon_kit/xmpp.rb', line 94 def valid_contact?( jid ) contacts.include?( jid.stripped.to_s ) end |