Sha256: 91894f373832d65930c4467250e640ffbffaad41ec76a374a3a99255f8e964de

Contents?: true

Size: 1.45 KB

Versions: 7

Compression:

Stored size: 1.45 KB

Contents

# encoding: UTF-8

module Vines
  class Stanza
    class Iq
      class DiscoInfo < Query
        NS = NAMESPACES[:disco_info]

        register "/iq[@id and @type='get']/ns:query", 'ns' => NS

        def process
          return if route_iq || !allowed?
          result = to_result.tap do |el|
            el << el.document.create_element('query') do |query|
              query.default_namespace = NS
              if to_pubsub_domain?
                identity(query, 'pubsub', 'service')
                pubsub = [:pubsub_create, :pubsub_delete, :pubsub_instant, :pubsub_item_ids, :pubsub_publish, :pubsub_subscribe]
                features(query, :disco_info, :ping, :pubsub, *pubsub)
              else
                identity(query, 'server', 'im')
                features = [:disco_info, :disco_items, :offline, :ping, :vcard, :version]
                features << :storage if stream.config.private_storage?(validate_to || stream.domain)
                features(query, features)
              end
            end
          end
          stream.write(result)
        end

        private

        def identity(query, category, type)
          query << query.document.create_element('identity', 'category' => category, 'type' => type)
        end

        def features(query, *features)
          features.flatten.each do |feature|
            query << query.document.create_element('feature', 'var' => NAMESPACES[feature])
          end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
diaspora-vines-0.2.0.develop.4 lib/vines/stanza/iq/disco_info.rb
diaspora-vines-0.2.0.develop.3 lib/vines/stanza/iq/disco_info.rb
diaspora-vines-0.2.0.develop.2 lib/vines/stanza/iq/disco_info.rb
diaspora-vines-0.2.0.develop.1 lib/vines/stanza/iq/disco_info.rb
diaspora-vines-0.1.28 lib/vines/stanza/iq/disco_info.rb
diaspora-vines-0.1.27 lib/vines/stanza/iq/disco_info.rb
diaspora-vines-0.1.26 lib/vines/stanza/iq/disco_info.rb