Class: Saml::Kit::Document
- Inherits:
-
Object
- Object
- Saml::Kit::Document
- Includes:
- ActiveModel::Validations, Buildable, Translatable, Trustable, XsdValidatable
- Defined in:
- lib/saml/kit/document.rb
Direct Known Subclasses
AuthenticationRequest, InvalidDocument, LogoutRequest, LogoutResponse, Response
Constant Summary collapse
- PROTOCOL_XSD =
File.('./xsd/saml-schema-protocol-2.0.xsd', File.dirname(__FILE__)).freeze
- NAMESPACES =
{ "NameFormat": ::Saml::Kit::Namespaces::ATTR_SPLAT, "ds": ::Xml::Kit::Namespaces::XMLDSIG, "md": ::Saml::Kit::Namespaces::METADATA, "saml": ::Saml::Kit::Namespaces::ASSERTION, "samlp": ::Saml::Kit::Namespaces::PROTOCOL, 'xmlenc' => ::Xml::Kit::Namespaces::XMLENC, }.freeze
- XPATH =
[ '/samlp:AuthnRequest', '/samlp:LogoutRequest', '/samlp:LogoutResponse', '/samlp:Response', ].join('|')
Instance Attribute Summary collapse
-
#registry ⇒ Object
Returns the value of attribute registry.
Class Method Summary collapse
-
.to_saml_document(xml, configuration: Saml::Kit.configuration) ⇒ Object
Returns the raw xml as a Saml::Kit SAML document.
Instance Method Summary collapse
-
#destination ⇒ Object
Returns the Destination of the SAML document.
-
#id ⇒ Object
Returns the ID for the SAML document.
-
#initialize(xml, name:, configuration: Saml::Kit.configuration) ⇒ Document
constructor
A new instance of Document.
-
#issue_instant ⇒ Object
Returns the Destination of the SAML document.
-
#issuer ⇒ Object
Returns the Issuer for the SAML document.
-
#to_h ⇒ Object
Returns the SAML document returned as a Hash.
- #to_s ⇒ Object
-
#to_xhtml ⇒ Object
Returns the SAML document as an XHTML string.
-
#to_xml(pretty: false) ⇒ Object
Returns the SAML document as an XML string.
-
#version ⇒ Object
Returns the Version of the SAML document.
Methods included from Trustable
Constructor Details
#initialize(xml, name:, configuration: Saml::Kit.configuration) ⇒ Document
Returns a new instance of Document.
27 28 29 30 31 32 |
# File 'lib/saml/kit/document.rb', line 27 def initialize(xml, name:, configuration: Saml::Kit.configuration) @configuration = configuration @registry = configuration.registry @content = xml @name = name end |
Instance Attribute Details
#registry ⇒ Object
Returns the value of attribute registry.
20 21 22 |
# File 'lib/saml/kit/document.rb', line 20 def registry @registry end |
Class Method Details
.to_saml_document(xml, configuration: Saml::Kit.configuration) ⇒ Object
Returns the raw xml as a Saml::Kit SAML document.
108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/saml/kit/document.rb', line 108 def to_saml_document(xml, configuration: Saml::Kit.configuration) constructor = { 'AuthnRequest' => Saml::Kit::AuthenticationRequest, 'LogoutRequest' => Saml::Kit::LogoutRequest, 'LogoutResponse' => Saml::Kit::LogoutResponse, 'Response' => Saml::Kit::Response, }[Nokogiri::XML(xml).at_xpath(XPATH, "samlp": ::Saml::Kit::Namespaces::PROTOCOL).name] || InvalidDocument constructor.new(xml, configuration: configuration) rescue StandardError => error Saml::Kit.logger.error(error) InvalidDocument.new(xml, configuration: configuration) end |
Instance Method Details
#destination ⇒ Object
Returns the Destination of the SAML document.
50 51 52 |
# File 'lib/saml/kit/document.rb', line 50 def destination at_xpath('./*/@Destination').try(:value) end |
#id ⇒ Object
Returns the ID for the SAML document.
35 36 37 |
# File 'lib/saml/kit/document.rb', line 35 def id at_xpath('./*/@ID').try(:value) end |
#issue_instant ⇒ Object
Returns the Destination of the SAML document.
55 56 57 |
# File 'lib/saml/kit/document.rb', line 55 def issue_instant Time.parse(at_xpath('./*/@IssueInstant').try(:value)) end |
#issuer ⇒ Object
Returns the Issuer for the SAML document.
40 41 42 |
# File 'lib/saml/kit/document.rb', line 40 def issuer at_xpath('./*/saml:Issuer').try(:text) end |
#to_h ⇒ Object
Returns the SAML document returned as a Hash.
60 61 62 |
# File 'lib/saml/kit/document.rb', line 60 def to_h @xml_hash ||= Hash.from_xml(content) || {} end |
#to_s ⇒ Object
92 93 94 |
# File 'lib/saml/kit/document.rb', line 92 def to_s to_xml end |
#to_xhtml ⇒ Object
Returns the SAML document as an XHTML string. This is useful for rendering in a web page.
73 74 75 |
# File 'lib/saml/kit/document.rb', line 73 def to_xhtml Nokogiri::XML(to_xml, &:noblanks).to_xhtml end |
#to_xml(pretty: false) ⇒ Object
Returns the SAML document as an XML string.
67 68 69 |
# File 'lib/saml/kit/document.rb', line 67 def to_xml(pretty: false) pretty ? to_nokogiri.to_xml(indent: 2) : content end |
#version ⇒ Object
Returns the Version of the SAML document.
45 46 47 |
# File 'lib/saml/kit/document.rb', line 45 def version at_xpath('./*/@Version').try(:value) end |