Class: SAML2::AttributeStatement
Instance Attribute Summary collapse
-
#attributes ⇒ Object
readonly
Returns the value of attribute attributes.
Attributes inherited from Base
Instance Method Summary collapse
- #build(builder) ⇒ Object
- #from_xml(node) ⇒ Object
-
#initialize(attributes = []) ⇒ AttributeStatement
constructor
A new instance of AttributeStatement.
-
#to_h(name = :both) ⇒ Object
Convert the AttributeStatement to a Hash.
Methods inherited from Base
#decrypt, from_xml, #inspect, load_object_array, load_string_array, lookup_qname, #to_s, #to_xml
Constructor Details
#initialize(attributes = []) ⇒ AttributeStatement
Returns a new instance of AttributeStatement.
166 167 168 169 |
# File 'lib/saml2/attribute.rb', line 166 def initialize(attributes = []) super() @attributes = attributes end |
Instance Attribute Details
#attributes ⇒ Object (readonly)
Returns the value of attribute attributes.
164 165 166 |
# File 'lib/saml2/attribute.rb', line 164 def attributes @attributes end |
Instance Method Details
#build(builder) ⇒ Object
214 215 216 217 218 219 |
# File 'lib/saml2/attribute.rb', line 214 def build(builder) builder["saml"].AttributeStatement("xmlns:xs" => Namespaces::XS, "xmlns:xsi" => Namespaces::XSI) do |statement| @attributes.each { |attr| attr.build(statement) } end end |
#from_xml(node) ⇒ Object
171 172 173 174 175 176 |
# File 'lib/saml2/attribute.rb', line 171 def from_xml(node) super @attributes = node.xpath("saml:Attribute", Namespaces::ALL).map do |attr| Attribute.from_xml(attr) end end |
#to_h(name = :both) ⇒ Object
Convert the SAML2::AttributeStatement to a Hash
Repeated attributes become an array.
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 |
# File 'lib/saml2/attribute.rb', line 186 def to_h(name = :both) return to_h(:friendly_name).merge(to_h(:name)) if name == :both result = {} attributes.each do |attribute| key = attribute.send(name) # fall back to name on missing friendly name; # no need for the opposite, because name is required key ||= attribute.name if name == :friendly_name prior_value = result[key] result[key] = if prior_value value = Array.wrap(prior_value) # repeated key; convert to array if attribute.value.is_a?(Array) # both values are arrays; concatenate them value.concat(attribute.value) else value << attribute.value end value else attribute.value end end result end |