Sha256: cd1013eb7c9b4861770b7a3a2e764539d9e47ed97dade85bf5415b15f87f2a70

Contents?: true

Size: 1.57 KB

Versions: 3

Compression:

Stored size: 1.57 KB

Contents

class UniformNotifier
  class Xmpp < Base
    @receiver = nil
    @xmpp = nil
    @password = nil

    def self.active?
      @xmpp
    end

    def self.setup_connection( xmpp_information )
      return unless xmpp_information

      require 'xmpp4r'

      @xmpp = xmpp_information
      @receiver = xmpp_information[:receiver]
      @password = xmpp_information[:password]
      @account  = xmpp_information[:account]
      @show_online_status = xmpp_information[:show_online_status]
      @stay_connected = xmpp_information[:stay_connected].nil? ? true : xmpp_information[:stay_connected]

      connect if @stay_connected
    rescue LoadError
      @xmpp = nil
      raise NotificationError.new( 'You must install the xmpp4r gem to use XMPP notification: `gem install xmpp4r`' )
    end

    protected

    def self._out_of_channel_notify( data )
      message = data.values.compact.join("\n")

      notify( message )
    end

    private
      def self.connect
        jid = Jabber::JID.new( @account )
        @xmpp = Jabber::Client.new( jid )
        @xmpp.connect
        @xmpp.auth( @password )
        @xmpp.send( presence_status ) if @show_online_status
      end

      def self.notify( message )
        connect unless @stay_connected
        message = Jabber::Message.new( @receiver, message ).
                                  set_type( :normal ).
                                  set_subject( 'Uniform Notifier' )
        @xmpp.send( message )
      end

      def self.presence_status
        Jabber::Presence.new.set_status( "Uniform Notifier started on #{Time.now}" )
      end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
uniform_notifier-1.11.0 lib/uniform_notifier/xmpp.rb
uniform_notifier-1.10.0 lib/uniform_notifier/xmpp.rb
uniform_notifier-1.9.0 lib/uniform_notifier/xmpp.rb