Class ActionMessenger::Messengers::Xmpp4rMessenger
In: lib/action_messenger/messengers/xmpp4r_messenger.rb
Parent: ActionMessenger::Messenger

Methods

new   send_message   shutdown  

Public Class methods

Creates a new messenger from its config hash.

Hash can contain:

   jid:      the Jabber ID of this messenger, with resource if you wish.
   password: the password for this messenger.

[Source]

    # File lib/action_messenger/messengers/xmpp4r_messenger.rb, line 9
 9:       def initialize(config_hash = {})
10:         super(config_hash)
11:         @listeners = []
12:       
13:         # Sanity check the JID to ensure it has a resource, and add one ourselves if it doesn't.
14:         jid = config_hash['jid']
15:         jid += '/ActionMessenger' unless jid =~ /\//
16:       
17:         # TODO: Different strategies for staying online (come online only to send messages.)
18:         # TODO: Reconnection strategy.
19:         # TODO: Multiple mechanisms for sending messages, for Jabber backend swap-out,
20:         #       but also to unit test the sending code.
21:         @client = Jabber::Client.new(Jabber::JID.new(jid))
22:       
23:         @client.connect
24:         @client.auth(config_hash['password'])
25:         
26:         @client.add_message_callback do |jabber_message|
27:           message = ActionMessenger::Message.new
28:           message.to = jabber_message.to.to_s
29:           message.from = jabber_message.from.to_s
30:           message.body = jabber_message.body
31:           message.subject = jabber_message.subject
32:           message_received(message)
33:         end
34:       end

Public Instance methods

Sends a message.

[Source]

    # File lib/action_messenger/messengers/xmpp4r_messenger.rb, line 37
37:       def send_message(message)
38:         to = message.to
39:         to = Jabber::JID.new(to) unless to.is_a?(Jabber::JID)
40:         jabber_message = Jabber::Message.new(to, message.body)
41:         jabber_message.subject = message.subject
42:         @client.send(jabber_message)
43:       end

TODO: See if there is a way to have this called on exit, for a more friendly shutdown.

[Source]

    # File lib/action_messenger/messengers/xmpp4r_messenger.rb, line 46
46:       def shutdown
47:         unless @client.nil?
48:           @client.close
49:           @client = nil
50:         end
51:       end

[Validate]