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