Sha256: 18631f309f2592c6b3cafcf673e59f22d91e90a28c6ec6b611f10e1351da179e

Contents?: true

Size: 775 Bytes

Versions: 5

Compression:

Stored size: 775 Bytes

Contents

module OpenID
  class Consumer
    class Session
      def initialize(session, decode_klass = nil)
        @session = session
        @decode_klass = decode_klass
      end

      def [](key)
        val = @session[key]
        @decode_klass ? @decode_klass.from_session_value(val) : val
      end

      def []=(key, val)
        @session[key] = to_session_value(val)
      end

      def keys
        @session.keys
      end

      private

      def to_session_value(val)
        case val
        when Array
          val.map{|ele| to_session_value(ele) }
        when Hash
          Hash[*(val.map{|k,v| [k, to_session_value(v)] }.flatten(1))]
        else
          val.respond_to?(:to_session_value) ? val.to_session_value : val
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ruby-openid-2.9.2 lib/openid/consumer/session.rb
ruby-openid-2.9.1 lib/openid/consumer/session.rb
ruby-openid-2.8.0 lib/openid/consumer/session.rb
ruby-openid-2.7.0 lib/openid/consumer/session.rb
ruby-openid-2.6.0 lib/openid/consumer/session.rb