Sha256: 929e19a950d6892d7ed4a232fb535e3674630e14df82ae74238eefdd5ee15e79

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

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

    def self.active?
      @xmpp
    end

    def self.out_of_channel_notify( message )
      return unless active?
      notify( message )
    end

    def self.setup_connection( xmpp_information )
      return unless xmpp_information

      require 'xmpp4r'

      @receiver = xmpp_information[:receiver]
      @password = xmpp_information[:password]
      @account  = xmpp_information[:account]
      @show_online_status = xmpp_information[:show_online_status]

      connect
    rescue LoadError
      @xmpp = nil
      raise NotificationError.new( 'You must install the xmpp4r gem to use XMPP notification: `gem install xmpp4r`' )
    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 )
        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

1 entries across 1 versions & 1 rubygems

Version Path
uniform_notifier-1.0.1 lib/uniform_notifier/xmpp.rb