Class: SAML2::AttributeConsumingService
- Includes:
- IndexedObject
- Defined in:
- lib/saml2/attribute_consuming_service.rb
Instance Attribute Summary collapse
- #description ⇒ LocalizedName readonly
- #name ⇒ LocalizedName readonly
- #requested_attributes ⇒ Array<RequestedAttribute> readonly
Attributes included from IndexedObject
Attributes inherited from Base
Instance Method Summary collapse
-
#build(builder) ⇒ void
Serialize this object to XML, as part of a larger document.
-
#create_statement(attributes) ⇒ AttributeStatement
Create an AttributeStatement from the given attributes hash.
-
#from_xml(node) ⇒ void
Parse an XML element into this object.
-
#initialize(name = nil, requested_attributes = []) ⇒ AttributeConsumingService
constructor
A new instance of AttributeConsumingService.
Methods included from IndexedObject
#default?, #default_defined?, #eql?
Methods inherited from Base
#decrypt, from_xml, #inspect, load_object_array, load_string_array, lookup_qname, #to_s, #to_xml
Constructor Details
#initialize(name = nil, requested_attributes = []) ⇒ AttributeConsumingService
Returns a new instance of AttributeConsumingService.
98 99 100 101 102 103 |
# File 'lib/saml2/attribute_consuming_service.rb', line 98 def initialize(name = nil, requested_attributes = []) super() @name = LocalizedName.new('ServiceName', name) @description = LocalizedName.new('ServiceDescription') @requested_attributes = requested_attributes end |
Instance Attribute Details
#description ⇒ LocalizedName (readonly)
92 93 94 |
# File 'lib/saml2/attribute_consuming_service.rb', line 92 def description @description end |
#name ⇒ LocalizedName (readonly)
92 93 94 |
# File 'lib/saml2/attribute_consuming_service.rb', line 92 def name @name end |
#requested_attributes ⇒ Array<RequestedAttribute> (readonly)
94 95 96 |
# File 'lib/saml2/attribute_consuming_service.rb', line 94 def requested_attributes @requested_attributes end |
Instance Method Details
#build(builder) ⇒ void
This method returns an undefined value.
Serialize this object to XML, as part of a larger document
170 171 172 173 174 175 176 177 178 179 |
# File 'lib/saml2/attribute_consuming_service.rb', line 170 def build(builder) builder['md'].AttributeConsumingService do |attribute_consuming_service| name.build(attribute_consuming_service) description.build(attribute_consuming_service) requested_attributes.each do |requested_attribute| requested_attribute.build(attribute_consuming_service) end end super end |
#create_statement(attributes) ⇒ AttributeStatement
Create an SAML2::AttributeStatement from the given attributes hash.
Given a set of attributes, create and return an SAML2::AttributeStatement with only the attributes that this SAML2::AttributeConsumingService requests.
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/saml2/attribute_consuming_service.rb', line 128 def create_statement(attributes) if attributes.is_a?(Hash) attributes = attributes.map { |k, v| Attribute.create(k, v) } end attributes_hash = {} attributes.each do |attr| attr.value = attr.value.call if attr.value.respond_to?(:call) attributes_hash[[attr.name, attr.name_format]] = attr if attr.name_format attributes_hash[[attr.name, nil]] = attr end end attributes = [] requested_attributes.each do |requested_attr| attr = attributes_hash[[requested_attr.name, requested_attr.name_format]] if requested_attr.name_format attr ||= attributes_hash[[requested_attr.name, nil]] end if attr if requested_attr.value && !Array.wrap(requested_attr.value).include?(attr.value) raise InvalidAttributeValue.new(requested_attr, attr.value) end attributes << attr elsif requested_attr.required? # if the metadata includes only one possible value, helpfully set # that value if requested_attr.value && !requested_attr.value.is_a?(::Array) attributes << Attribute.create(requested_attr.name, requested_attr.value) else raise RequiredAttributeMissing.new(requested_attr) end end end return nil if attributes.empty? AttributeStatement.new(attributes) end |
#from_xml(node) ⇒ void
This method returns an undefined value.
Parse an XML element into this object.
106 107 108 109 110 111 |
# File 'lib/saml2/attribute_consuming_service.rb', line 106 def from_xml(node) super name.from_xml(node.xpath('md:ServiceName', Namespaces::ALL)) description.from_xml(node.xpath('md:ServiceDescription', Namespaces::ALL)) @requested_attributes = load_object_array(node, "md:RequestedAttribute", RequestedAttribute) end |