class Jabber::PubSub::Configuration

Public Instance Methods

form() click to toggle source

get the underlying XData form element

# File lib/xmpp4r/pubsub/children/configuration.rb, line 14
def form
  children.each do |c|
    return c if c.kind_of?(Jabber::Dataforms::XData)
  end

  nil
end
form=(form) click to toggle source
# File lib/xmpp4r/pubsub/children/configuration.rb, line 22
def form=(form)
  children.each do |c|
    delete_element(c)
    if c.kind_of?(Jabber::Dataforms::XData)
      delete(c)
    end
  end
  add(form)
end
form_type() click to toggle source

Implemented by NodeConfig and SubscriptionConfig

# File lib/xmpp4r/pubsub/children/configuration.rb, line 33
def form_type
  ''
end
node() click to toggle source
# File lib/xmpp4r/pubsub/children/configuration.rb, line 62
def node
  attributes['node']
end
node=(node) click to toggle source
# File lib/xmpp4r/pubsub/children/configuration.rb, line 58
def node=(node)
  attributes['node'] = node
end
options() click to toggle source

get a list of the configured options represented by this stanza

return
Hash

the options and their values

# File lib/xmpp4r/pubsub/children/configuration.rb, line 46
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
options=(options) click to toggle source
# File lib/xmpp4r/pubsub/children/configuration.rb, line 37
def options=(options)
  if options
    self.form = form_for_options( form_type, options )
  end
end

Private Instance Methods

form_for_options(type, options) click to toggle source

creates a Dataform for configuration

config
Hash

the desired configuration options

# File lib/xmpp4r/pubsub/children/configuration.rb, line 71
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.is_a?(Array) ? value : [value]
    form.add(f)
  end

  form
end