class Vines::Stream::Server::Outbound::AuthExternal

Public Class Methods

new(stream, success=AuthExternalResult) click to toggle source
Calls superclass method
# File lib/vines/stream/server/outbound/auth_external.rb, line 8
def initialize(stream, success=AuthExternalResult)
  super
end

Public Instance Methods

node(node) click to toggle source
# File lib/vines/stream/server/outbound/auth_external.rb, line 12
def node(node)
  raise StreamErrors::NotAuthorized unless external?(node)
  authzid = Base64.strict_encode64(stream.domain)
  stream.write(%Q{<auth xmlns="#{NAMESPACES[:sasl]}" mechanism="EXTERNAL">#{authzid}</auth>})
  advance
end

Private Instance Methods

external?(node) click to toggle source
# File lib/vines/stream/server/outbound/auth_external.rb, line 21
def external?(node)
  external = node.xpath("ns:mechanisms/ns:mechanism[text()='EXTERNAL']", 'ns' => NAMESPACES[:sasl]).any?
  features?(node) && external
end
features?(node) click to toggle source
# File lib/vines/stream/server/outbound/auth_external.rb, line 26
def features?(node)
  node.name == 'features' && namespace(node) == NAMESPACES[:stream]
end