Sha256: 2b4f5a8a930513d22bf8c75b341ac712401ac1a42abc4a4b5698dcfab0404267

Contents?: true

Size: 1.25 KB

Versions: 31

Compression:

Stored size: 1.25 KB

Contents

require 'happymapper'

module Saml
  module Base
    extend ActiveSupport::Concern

    included do
      include ::HappyMapper
      include ::ActiveModel::Validations

      extend HappyMapperClassMethods
      include HappyMapperInstanceMethods
    end

    module HappyMapperInstanceMethods
      def initialize(attributes = {})
        attributes.each do |key, value|
          send("#{key}=", value) if respond_to?("#{key}=") && value.present?
        end
      end

      def from_xml=(bool)
        @from_xml = bool
      end

      def from_xml?
        @from_xml
      end
    end

    module HappyMapperClassMethods
      def parse(xml, options = {})
        if xml.is_a?(String)
          ActiveSupport::XmlMini_REXML.parse(xml)
        end

        object = super
        if object.is_a?(Array)
          object.map { |x| x.from_xml = true }
        elsif object
          object.from_xml = true
        end
        object
      rescue Nokogiri::XML::SyntaxError, REXML::ParseException => e
        raise Saml::Errors::UnparseableMessage.new(e.message)
      rescue TypeError => e
        raise Saml::Errors::UnparseableMessage.new(e.message)
      rescue NoMethodError => e
        raise Saml::Errors::UnparseableMessage.new(e.message)
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
libsaml-2.12.1 lib/saml/base.rb
libsaml-2.12.0 lib/saml/base.rb
libsaml-2.11.2 lib/saml/base.rb
libsaml-2.11.1 lib/saml/base.rb
libsaml-2.11.0 lib/saml/base.rb
libsaml-2.10.7 lib/saml/base.rb
libsaml-2.10.6 lib/saml/base.rb
libsaml-2.10.5 lib/saml/base.rb
libsaml-2.10.4 lib/saml/base.rb
libsaml-2.10.3 lib/saml/base.rb
libsaml-2.10.2 lib/saml/base.rb
libsaml-2.10.1 lib/saml/base.rb
libsaml-2.10.0 lib/saml/base.rb
libsaml-2.9.0 lib/saml/base.rb
libsaml-2.8.1 lib/saml/base.rb
libsaml-2.8.0 lib/saml/base.rb
libsaml-2.7.0 lib/saml/base.rb
libsaml-2.6.9 lib/saml/base.rb
libsaml-2.6.8 lib/saml/base.rb
libsaml-2.6.7 lib/saml/base.rb