Sha256: 9c5a2cd34e63dc8ce57c970270b60bb0595379408d968f803db2b6dc75ad4536

Contents?: true

Size: 1.5 KB

Versions: 34

Compression:

Stored size: 1.5 KB

Contents

module SamlIdp
  class NameIdFormatter
    attr_accessor :list
    def initialize(list)
      self.list = (list || {})
    end

    def all
      if split?
        one_one.map { |key_val| build("1.1", key_val)[:name] } +
        two_zero.map { |key_val| build("2.0", key_val)[:name] }
      else
        list.map { |key_val| build("2.0", key_val)[:name] }
      end
    end

    def chosen
      if split?
        version, choose = "1.1", one_one.first
        version, choose = "2.0", two_zero.first unless choose
        version, choose = "2.0", "persistent" unless choose
        build(version, choose)
      else
        choose = list.first || "persistent"
        build("2.0", choose)
      end
    end

    def build(version, key_val)
      key_val = Array(key_val)
      name = key_val.first.to_s.underscore
      getter = build_getter key_val.last || name
      {
        name: "urn:oasis:names:tc:SAML:#{version}:nameid-format:#{name.camelize(:lower)}",
        getter: getter
      }
    end
    private :build

    def build_getter(getter_val)
      if getter_val.respond_to?(:call)
        getter_val
      else
        ->(p) { p.public_send getter_val.to_s }
      end
    end
    private :build_getter

    def split?
      list.is_a?(Hash) && (list.key?("2.0") || list.key?("1.1"))
    end
    private :split?

    def one_one
      list["1.1"] || {}
    rescue TypeError
      {}
    end
    private :one_one

    def two_zero
      list["2.0"] || {}
    rescue TypeError
      {}
    end
    private :two_zero
  end
end

Version data entries

34 entries across 34 versions & 2 rubygems

Version Path
saml_idp-0.16.0 lib/saml_idp/name_id_formatter.rb
saml_idp-0.15.0 lib/saml_idp/name_id_formatter.rb
saml_idp-0.14.0 lib/saml_idp/name_id_formatter.rb
saml_idp-0.12.0 lib/saml_idp/name_id_formatter.rb
saml_idp-0.11.0 lib/saml_idp/name_id_formatter.rb
saml_idp-0.10.0 lib/saml_idp/name_id_formatter.rb
saml_idp-0.9.0 lib/saml_idp/name_id_formatter.rb
saml_idp-0.8.1 lib/saml_idp/name_id_formatter.rb
saml_idp-0.8.0 lib/saml_idp/name_id_formatter.rb
saml_idp-0.7.2 lib/saml_idp/name_id_formatter.rb
saml_idp-0.7.1 lib/saml_idp/name_id_formatter.rb
saml_idp-0.7.0 lib/saml_idp/name_id_formatter.rb
saml_idp-0.6.0 lib/saml_idp/name_id_formatter.rb
saml_idp-0.5.0 lib/saml_idp/name_id_formatter.rb
icn_saml_idp-0.4.1 lib/saml_idp/name_id_formatter.rb
saml_idp-0.4.0 lib/saml_idp/name_id_formatter.rb
saml_idp-0.3.2 lib/saml_idp/name_id_formatter.rb
saml_idp-0.3.1 lib/saml_idp/name_id_formatter.rb
saml_idp-0.3.0 lib/saml_idp/name_id_formatter.rb
saml_idp-0.2.1 lib/saml_idp/name_id_formatter.rb