Sha256: 1ec916d4894e35ecd95b6e8d0907d11e069ba66854e4f22e7db746866f0d6161

Contents?: true

Size: 869 Bytes

Versions: 2

Compression:

Stored size: 869 Bytes

Contents

require_relative 'base'

module Amsi
  class AttributeParser
    # Parse the response value of a date attribute
    class Date < Base
      # AMSI responds with multiple date formats. This is one format that
      # Date.parse will not parse correctly, so we need special handling
      FORMAT = '%m/%d/%Y'.freeze
      private_constant :FORMAT

      # @return [Date] the parsed attribute value
      def parse
        return if value == ''
        if value =~ %r[/]
          ::Date.strptime(value, FORMAT)
        else
          # AMSI sometimes returns 0001-01-01 for dates, which appears to be
          # their representation of a NULL value.
          date = ::Date.parse(value)
          date.year == 1 ? nil : date
        end
      rescue ArgumentError
        raise Error::InvalidResponse, "Invalid date 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.rb
amsi-1.0.0 lib/amsi/attribute_parser/date.rb