Class: Mail::ReceivedField

Inherits:
StructuredField show all
Defined in:
lib/mail/fields/received_field.rb

Constant Summary collapse

FIELD_NAME =
'received'
CAPITALIZED_FIELD =
'Received'

Constants included from Patterns

Patterns::ATOM_UNSAFE, Patterns::CONTROL_CHAR, Patterns::CRLF, Patterns::FIELD_BODY, Patterns::FIELD_LINE, Patterns::FWS, Patterns::HEADER_LINE, Patterns::PHRASE_UNSAFE, Patterns::QP_SAFE, Patterns::QP_UNSAFE, Patterns::TEXT, Patterns::TOKEN_UNSAFE, Patterns::WSP

Instance Method Summary collapse

Methods inherited from StructuredField

#charset, #charset=, #default, #errors

Methods included from Utilities

#atom_safe?, #bracket, #capitalize_field, #constantize, #dasherize, #dquote, #escape_paren, #map_lines, #map_with_index, #match_to_s, #paren, #quote_atom, #quote_phrase, #quote_token, #token_safe?, #unbracket, #underscoreize, #unparen, #unquote, #uri_escape, #uri_parser, #uri_unescape

Methods included from CommonField

#default, #field_length, #name, #name=, #responsible_for?, #to_s, #value, #value=

Constructor Details

#initialize(value = nil, charset = 'utf-8') ⇒ ReceivedField

Returns a new instance of ReceivedField.



28
29
30
31
32
33
34
# File 'lib/mail/fields/received_field.rb', line 28

def initialize(value = nil, charset = 'utf-8')
  self.charset = charset
  super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
  self.parse
  self

end

Instance Method Details

#date_timeObject



46
47
48
# File 'lib/mail/fields/received_field.rb', line 46

def date_time
  @datetime ||= ::DateTime.parse("#{element.date_time}")
end

#decodedObject



66
67
68
69
70
71
72
# File 'lib/mail/fields/received_field.rb', line 66

def decoded
  if value.blank?
    ""
  else
    "#{info}; #{formatted_date}" 
  end
end

#elementObject



42
43
44
# File 'lib/mail/fields/received_field.rb', line 42

def element
  @element ||= Mail::ReceivedElement.new(value)
end

#encodedObject



58
59
60
61
62
63
64
# File 'lib/mail/fields/received_field.rb', line 58

def encoded
  if value.blank?
    "#{CAPITALIZED_FIELD}: \r\n"
  else
    "#{CAPITALIZED_FIELD}: #{info}; #{formatted_date}\r\n"
  end
end

#formatted_dateObject



54
55
56
# File 'lib/mail/fields/received_field.rb', line 54

def formatted_date
  date_time.strftime("%a, %d %b %Y %H:%M:%S ") + date_time.zone.delete(':')
end

#infoObject



50
51
52
# File 'lib/mail/fields/received_field.rb', line 50

def info
  element.info
end

#parse(val = value) ⇒ Object



36
37
38
39
40
# File 'lib/mail/fields/received_field.rb', line 36

def parse(val = value)
  unless val.blank?
    @element = Mail::ReceivedElement.new(val)
  end
end