Class: AptControl::Jabber

Inherits:
Object
  • Object
show all
Includes:
Jabber
Defined in:
lib/apt_control/jabber.rb

Defined Under Namespace

Classes: ConnectionError, Error, SendError

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Jabber

Returns a new instance of Jabber.



10
11
12
13
14
15
16
17
# File 'lib/apt_control/jabber.rb', line 10

def initialize(options)
  @jid      = options[:jid]
  @password = options[:password]
  @room_jid = options[:room_jid]
  @logger   = options[:logger]

  swallow_errors { connect! } unless options[:defer_connect]
end

Instance Method Details

#connected?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/apt_control/jabber.rb', line 49

def connected?
  @client && @client.is_connected? && @muc && @muc.active?
end

#not_connected?Boolean

Returns:

  • (Boolean)


53
# File 'lib/apt_control/jabber.rb', line 53

def not_connected? ; ! connected? ; end

#send_message(msg) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/apt_control/jabber.rb', line 19

def send_message(msg)
  if not_connected?
    connect!
  end

  begin
    attempt_reconnect do
      @logger.info("sending message to chat room: #{msg}")
      @muc.send(Message.new(nil, msg))
    end
  rescue JabberError => e
    raise SendError.new("failed to send message to chat room", e)
  end
end

#swallow_errors(jabber_errors_too = false, &block) ⇒ Object

execute the block, swallow any Jabber::Error errors it raises, reporting them to the logger



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/apt_control/jabber.rb', line 36

def swallow_errors(jabber_errors_too=false, &block)
  begin
    yield(self)
  rescue Error => e
    @logger.error("swallowed error: #{e}")
    @logger.error(e)
  rescue JabberError => e
    raise unless jabber_errors_too
    @logger.error("swallowed error: #{e}")
    @logger.error(e)
  end
end