Module: ShibRack::AttributeMapping::ClassMethods

Defined in:
lib/shib_rack/attribute_mapping.rb

Overview

Class methods for defining attribute mappings

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#attribute_mappingsObject

Returns the value of attribute attribute_mappings.



8
9
10
# File 'lib/shib_rack/attribute_mapping.rb', line 8

def attribute_mappings
  @attribute_mappings
end

Instance Method Details

#add_attribute_mapping(attr, mapper) ⇒ Object



24
25
26
27
28
# File 'lib/shib_rack/attribute_mapping.rb', line 24

def add_attribute_mapping(attr, mapper)
  raise "Conflicting mapping for `#{attr}`" if attribute_mappings[attr]

  attribute_mappings[attr] = mapper
end

#map_multi_value(**mappings) ⇒ Object



17
18
19
20
21
22
# File 'lib/shib_rack/attribute_mapping.rb', line 17

def map_multi_value(**mappings)
  mappings.each do |attr, header|
    mapper = ->(env) { parse_multi_value(env[header]) }
    add_attribute_mapping(attr, mapper)
  end
end

#map_single_value(**mappings) ⇒ Object



10
11
12
13
14
15
# File 'lib/shib_rack/attribute_mapping.rb', line 10

def map_single_value(**mappings)
  mappings.each do |attr, header|
    mapper = ->(env) { env[header] }
    add_attribute_mapping(attr, mapper)
  end
end

#parse_multi_value(value) ⇒ Object



30
31
32
# File 'lib/shib_rack/attribute_mapping.rb', line 30

def parse_multi_value(value)
  value.split(/(?<!\\);/).map { |x| x.gsub('\;', ';') }
end