Sha256: 69c10c628bca9e3a30bfb6210dc5e97a043dc7a1e4712ec7d855e8311270f0f4

Contents?: true

Size: 798 Bytes

Versions: 10

Compression:

Stored size: 798 Bytes

Contents

# encoding: UTF-8

module Vines
  class Stream
    class Server
      class Outbound
        class Auth < State
          NS = NAMESPACES[:sasl]

          def initialize(stream, success=AuthResult)
            super
          end

          def node(node)
            raise StreamErrors::NotAuthorized unless external?(node)
            authz = Base64.encode64(stream.domain).chomp
            stream.write(%Q{<auth xmlns="#{NS}" mechanism="EXTERNAL">#{authz}</auth>})
            advance
          end

          private

          def external?(node)
            external = node.xpath("ns:mechanisms/ns:mechanism[text()='EXTERNAL']", 'ns' => NS).any?
            node.name == 'features' && namespace(node) == NAMESPACES[:stream] && external
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
vines-0.4.2 lib/vines/stream/server/outbound/auth.rb
vines-0.4.1 lib/vines/stream/server/outbound/auth.rb
vines-0.4.0 lib/vines/stream/server/outbound/auth.rb
vines-0.3.2 lib/vines/stream/server/outbound/auth.rb
vines-0.3.1 lib/vines/stream/server/outbound/auth.rb
vines-0.3.0 lib/vines/stream/server/outbound/auth.rb
vines-0.2.1 lib/vines/stream/server/outbound/auth.rb
vines-0.2.0 lib/vines/stream/server/outbound/auth.rb
vines-0.1.1 lib/vines/stream/server/outbound/auth.rb
vines-0.1.0 lib/vines/stream/server/outbound/auth.rb