aboutsummaryrefslogtreecommitdiff
path: root/lib/mauve/notifiers/xmpp.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mauve/notifiers/xmpp.rb')
-rw-r--r--lib/mauve/notifiers/xmpp.rb57
1 files changed, 36 insertions, 21 deletions
diff --git a/lib/mauve/notifiers/xmpp.rb b/lib/mauve/notifiers/xmpp.rb
index 5ffe8f4..ae9734f 100644
--- a/lib/mauve/notifiers/xmpp.rb
+++ b/lib/mauve/notifiers/xmpp.rb
@@ -85,15 +85,25 @@ module Mauve
@client = nil
end
+ # The logger instance
+ #
+ # @return [Log4r::Logger]
def logger
# Give the logger a sane name
@logger ||= Log4r::Logger.new self.class.to_s.sub(/::Default$/,"")
end
+ # Sets the client's JID
+ #
+ # @param [String] jid The JID required.
+ # @return [Jabber::JID] The client JID.
def jid=(jid)
@jid = JID.new(jid)
end
-
+
+ # Connects to the XMPP server, and sets up the roster
+ #
+ # @return [Jabber::Client, NilClass] The connected client, or nil in the case of failure
def connect
logger.debug "Starting connection to #{@jid}"
@@ -156,13 +166,14 @@ module Mauve
@client = nil
end
- #
- # Kills the processor thread
- #
def stop
@client.stop
end
-
+
+ #
+ # Closes the XMPP connection, if possible. Sets @client to nil.
+ #
+ # @return [NilClass]
def close
@closing = true
if @client
@@ -177,27 +188,32 @@ module Mauve
@client = nil
end
+ # Determines if the client is ready.
+ #
+ # @return [Boolean]
def ready?
@client.is_a?(Jabber::Client) and @client.is_connected?
end
- #
- # Takes an alert and converts it into a message.
- #
- def convert_alert_to_message(alert)
- end
-
# Attempt to send an alert using XMPP.
- # +destination+ is the JID you're sending the alert to. This should be
- # a bare JID in the case of an individual, or muc:<room>@<server> for
- # chatrooms (XEP0045). The +alert+ object is turned into a pretty
- # message and sent to the destination as a message, if the +conditions+
- # are met. all_alerts are currently ignored.
#
- # The only suported condition at the moment is :if_presence => [choices]
- # which checks whether the jid in question has a presence matching one
- # or more of the choices - see +check_jid_has_presence+ for options.
-
+ # @param [String] destination The JID you're sending the alert to. This should be
+ # a bare JID in the case of an individual, or +muc:room@server+ for
+ # chatrooms (XEP0045).
+ #
+ # @param [Mauve::Alert] alert This is turned into a pretty
+ # message and sent to the destination as a message, if +conditions+
+ # are met.
+ #
+ # @param [Array] all_alerts Currently ignored.
+ #
+ # @param [Hash] conditions Conditions that determine if an alert should be sent
+ #
+ # @option conditions [Array] :if_presence Checks whether the jid in question
+ # has a presence matching one or more of the choices - see
+ # Mauve::Notifiers::Xmpp::Default#check_jid_has_presence for options.
+ #
+ # @return [Boolean]
def send_alert(destination, alert, all_alerts, conditions = {})
destination_jid = JID.new(destination)
@@ -650,7 +666,6 @@ EOF
# :unavailable - - jabber status is away, dnd or xa
# :unknown - don't know (not in roster)
#
- # For MUCs: TODO
# Returns true if at least one of the presence specifiers for the jid
# is met, false otherwise. Note that if the alerter can't see the alertee's
# presence, only 'unknown' will match - generally, you'll want [:online, :unknown]