main
 1# frozen_string_literal: true
 2
 3module Saml
 4  module Kit
 5    class Conditions
 6      include XmlParseable
 7
 8      attr_reader :content
 9
10      def initialize(node)
11        @to_nokogiri = node
12        @content = node.to_s
13      end
14
15      def started_at
16        parse_iso8601(at_xpath('./@NotBefore').try(:value))
17      end
18
19      def expired_at
20        parse_iso8601(at_xpath('./@NotOnOrAfter').try(:value))
21      end
22
23      def audiences
24        search('./saml:AudienceRestriction/saml:Audience').map(&:text)
25      end
26
27      private
28
29      def parse_iso8601(value)
30        DateTime.parse(value)
31      rescue StandardError => error
32        Saml::Kit.logger.error(error)
33        Time.at(0).to_datetime
34      end
35    end
36  end
37end