1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
# encoding: utf-8
# frozen_string_literal: true
require 'mail/parsers/received_parser'
require 'mail/utilities'
require 'date'
module Mail
class ReceivedElement #:nodoc:
attr_reader :info, :date_time
def initialize(string)
if Utilities.blank? string
@date_time = nil
@info = nil
else
received = Mail::Parsers::ReceivedParser.parse(string)
@date_time = datetime_for(received)
@info = received.info
end
end
def to_s(*args)
"#{info}; #{date_time.to_s(*args)}"
end
private
def datetime_for(received)
::DateTime.parse("#{received.date} #{received.time}")
rescue ArgumentError => e
raise e unless e.message == 'invalid date'
warn "WARNING: Invalid date field for received element (#{received.date} #{received.time}): #{e.class}: #{e.message}"
nil
end
end
end
|