# =XMPP4R - XMPP Library for Ruby # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option. # Website::http://home.gna.org/xmpp4r/ # # For documentation of the return values please see [Jabber::PubSub::ServiceHelper] # This class is only a wrapper around [Jabber::PubSub::ServiceHelper] # require 'xmpp4r/pubsub/helper/servicehelper' require 'xmpp4r/pubsub/helper/nodebrowser' module Jabber module PubSub class NodeHelper < ServiceHelper attr_reader :nodename attr_reader :name attr_reader :jid attr_reader :my_subscriptions ## # creates a new node # new(client,service,nodename) # stream:: [Jabber::Stream] # jid:: [String] (jid of the pubsub service) # nodename:: [String] def initialize(stream, jid, nodename = nil, create_if_not_exist = true) super(stream,jid) @nodename = nodename @jid = jid @stream = stream if create_if_not_exist and !node_exist? # if no nodename is given a instant node will created # (if the service supports instant nodes) @nodename = create_node else get_subscriptions end end ## # creates the node # create(configuration=nil) # configuration:: [Jabber::XData] def create_node(configuration = Jabber::PubSub::NodeConfig.new) unless node_exist? super(@nodename,configuration) else false end end ## # get the configuration of the node # get_configuration(configuration=nil) # configuration:: [Jabber::XData] def get_configuration(subid = nil) get_options(@nodename, subid) end ## # set the configuration of the node # set_configuration(configuration=nil) # configuration:: [Jabber::XData] # subid:: [String] default is nil def set_configuration(configuration,subid = nil) set_options(@nodename, configuration, subid) end ## # deletes the node # delete def delete_node delete(@nodename) end ## # publishing content on this node # publish_content(items) # items:: [REXML::Element] def publish_content(items) publish_item_to(@nodename,items) end ## # gets all items from the node # get_all_items def get_all_items get_items_from(@nodename) end ## # get a count of items # get_items(count) # count:: [Fixnum] def get_items(count) get_items_from(@nodename,count) end ## # get all node affiliations # get_affiliations def get_affiliations affiliations end ## # get all subscriptions on this node # get_subscriptions def get_subscriptions get_subscriptions_from(@nodename) end ## # get all subscribers subscribed on this node # get_subscribers def get_subscribers @subscriptions = subscribers(@nodename) end ## # subscribe to this node # do_subscribe def do_subscribe subscribe_to(@nodename) get_subscriptions end ## # unsubscribe from this node # do_unsubscribe(subid = nil) # subid:: [String] def do_unsubscribe(subid) unsubscribe(@nodename,subid) end ## # purge all items from this node # purge_items def purge_items purge(@nodename) end private def node_exist? nodebrowser = PubSub::NodeBrowser.new(@stream) nodebrowser.nodes(@jid).include?(@nodename) end def disco_info end end #class end #module end #module