lib/saml/kit/xml.rb in saml-kit-0.1.0 vs lib/saml/kit/xml.rb in saml-kit-0.2.0

- old
+ new

@@ -1,26 +1,42 @@ module Saml module Kit class Xml include ActiveModel::Validations + NAMESPACES = { + "NameFormat": Namespaces::ATTR_SPLAT, + "ds": Namespaces::XMLDSIG, + "md": Namespaces::METADATA, + "saml": Namespaces::ASSERTION, + }.freeze attr_reader :raw_xml, :document validate :validate_signatures validate :validate_certificates def initialize(raw_xml) @raw_xml = raw_xml - @document = Nokogiri::XML(raw_xml, nil, nil, Nokogiri::XML::ParseOptions::STRICT) do |config| - config.noblanks - end + @document = Nokogiri::XML(raw_xml) end def x509_certificates xpath = "//ds:KeyInfo/ds:X509Data/ds:X509Certificate" document.search(xpath, Xmldsig::NAMESPACES).map do |item| OpenSSL::X509::Certificate.new(Base64.decode64(item.text)) end + end + + def find_by(xpath) + document.at_xpath(xpath, NAMESPACES) + end + + def find_all(xpath) + document.search(xpath, NAMESPACES) + end + + def to_xml(pretty: true) + pretty ? document.to_xml(indent: 2) : raw_xml end private def validate_signatures