Sha256: 365fb07e9c68d36b5780f3363451622be6f434fe5d1c3e5330272da5e174d721

Contents?: true

Size: 682 Bytes

Versions: 2

Compression:

Stored size: 682 Bytes

Contents

require 'tzinfo'

require_relative 'base'

module Amsi
  class AttributeParser
    # Parse the response value of a date with time attribute.
    class DateTime < Base
      # AMSI time strings are assumed to be in Central time.
      TIME_ZONE = TZInfo::Timezone.get('America/Chicago')
      private_constant :TIME_ZONE

      # @return [Date] the parsed attribute value
      def parse
        return if value == ''
        date_time = ::DateTime.parse(value)
        TIME_ZONE.local_to_utc(date_time) { |periods| periods.last }
      rescue ArgumentError
        raise Error::InvalidResponse,
              "Invalid date/time response value: #{value}"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
amsi-1.0.1 lib/amsi/attribute_parser/date_time.rb
amsi-1.0.0 lib/amsi/attribute_parser/date_time.rb