Sha256: 46e58b906c4e6466182d3f337f190b722cc8c39f3f0cb8cdd199e32c21971e56

Contents?: true

Size: 1.98 KB

Versions: 20

Compression:

Stored size: 1.98 KB

Contents

# =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/

require 'xmpp4r/xmppelement'
require 'xmpp4r/pubsub/iq/pubsub'

module Jabber
  module PubSub

    class Configuration < XMPPElement
      ##
      # get the underlying XData form element
      def form
        children.each do |c|
          return c if c.kind_of?(Jabber::Dataforms::XData)
        end

        nil
      end

      def form=(form)
        children.each do |c|
          delete_element(c)
          if c.kind_of?(Jabber::Dataforms::XData)
            delete(c)
          end
        end
        add(form)
      end

      # Implemented by NodeConfig and SubscriptionConfig
      def form_type
        ''
      end

      def options=(options)
        if options
          self.form = form_for_options( form_type, options )
        end
      end

      ##
      # get a list of the configured options represented by this stanza
      # return:: [Hash] the options and their values
      def options
        configured_options = {}

        if !form.nil?
          form.fields.each do |f|
            f.values.size == 1 ? configured_options[f.var] = f.values.first : configured_options[f.var] = f.values
          end
        end

        configured_options
      end

      def node=(node)
        attributes['node'] = node
      end

      def node
        attributes['node']
      end

      private

      ##
      # creates a Dataform for configuration
      # config:: [Hash] the desired configuration options
      def form_for_options(type, options)
        form = Jabber::Dataforms::XData.new(:submit)
        pubsub_config = Jabber::Dataforms::XDataField.new('FORM_TYPE', :hidden)
        pubsub_config.values = [type]
        form.add(pubsub_config)
        options.each_pair do |key, value|
          f = Jabber::Dataforms::XDataField.new(key)
          f.values = [value]
          form.add(f)
        end

        form
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 8 rubygems

Version Path
brontes3d-xmpp4r-0.4 lib/xmpp4r/pubsub/children/configuration.rb
edavey-xmpp4r-0.4.1 lib/xmpp4r/pubsub/children/configuration.rb
edavey-xmpp4r-0.4.2 lib/xmpp4r/pubsub/children/configuration.rb
edavey-xmpp4r-0.4 lib/xmpp4r/pubsub/children/configuration.rb
mojodna-xmpp4r-0.4.0.2 lib/xmpp4r/pubsub/children/configuration.rb
mojodna-xmpp4r-0.4.0.3 lib/xmpp4r/pubsub/children/configuration.rb
seanohalpin-xmpp4r-0.4.1 lib/xmpp4r/pubsub/children/configuration.rb
cerberus-0.8.0 lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb
cerberus-0.7.9 lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb
edavis10-cerberus-0.7.8 lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb
cerberus-0.7.8 lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb
cerberus-0.7.7 lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb
cerberus-0.7.6 lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb
cerberus-0.7.2 lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb
cerberus-0.7.5 lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb
cerberus-0.7 lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb
mack-notifier-0.8.2 lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/configuration.rb
mack-notifier-0.8.3.1 lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/configuration.rb
mack-notifier-0.8.3 lib/gems/xmpp4r-0.4/lib/xmpp4r/pubsub/children/configuration.rb
xmpp4r-0.4 lib/xmpp4r/pubsub/children/configuration.rb