Class: Joggle::Jabber::Client
- Inherits:
-
Object
- Object
- Joggle::Jabber::Client
- Includes:
- Pablotron::Observable
- Defined in:
- lib/joggle/jabber/client.rb
Overview
Simple XMPP client.
Constant Summary collapse
- DEFAULTS =
{ 'jabber.client.debug' => false, }
Instance Method Summary collapse
-
#deliver(who, body, type = :chat) ⇒ Object
Deliver jabber message to user.
-
#initialize(user, pass, opt = {}) ⇒ Client
constructor
Create a new Jabber::Client object.
Methods included from Pablotron::Observable
Constructor Details
#initialize(user, pass, opt = {}) ⇒ Client
Create a new Jabber::Client object.
Example:
# create new client object
client = Client.new('[email protected]', 'mysekretpassword')
25 26 27 28 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 57 58 59 60 61 62 63 64 65 |
# File 'lib/joggle/jabber/client.rb', line 25 def initialize(user, pass, opt = {}) # parse options @opt = DEFAULTS.merge(opt || {}) # enable debugging to stdout if @opt['jabber.client.debug'] ::Jabber.debug = true end # FIXME: this belongs elsewhere Thread.abort_on_exception = false # create new jid and client jid = ::Jabber::JID.new(user) available = ::Jabber::Presence.new.set_type(:available) @client = ::Jabber::Client.new(jid) @client.connect @client.auth(pass) @client.send(available) roster = ::Jabber::Roster::Helper.new(@client) @client. do |msg| next unless msg.type == :chat fire('jabber_client_message', msg) end @client.add_presence_callback do |old_p, new_p| fire('jabber_client_presence', old_p, new_p) end roster.add_subscription_request_callback do |item, presence| from = presence.from if fire('before_jabber_client_accept_subscription', from) roster.accept_subscription(from) fire('jabber_client_accept_subscription', from) end end end |
Instance Method Details
#deliver(who, body, type = :chat) ⇒ Object
Deliver jabber message to user.
Example:
# send message
client.deliver('[email protected]', 'hey there!')
75 76 77 78 79 |
# File 'lib/joggle/jabber/client.rb', line 75 def deliver(who, body, type = :chat) msg = ::Jabber::Message.new(who, body) msg.type = type @client.send(msg) end |