Class: CircularMail::HeaderField

Inherits:
Object
  • Object
show all
Defined in:
lib/circular-mail.rb

Overview

Description: This object can store 16 selected header fields, which are mandatory for CircularMail.

Validation of field values is happening in this class, rather than in Header. This is due to keep Header clean.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#bodyObject (readonly)

Returns the value of attribute body.



481
482
483
# File 'lib/circular-mail.rb', line 481

def body
  @body
end

#nameObject (readonly)

Returns the value of attribute name.



480
481
482
# File 'lib/circular-mail.rb', line 480

def name
  @name
end

Instance Method Details

#getObject



537
538
539
# File 'lib/circular-mail.rb', line 537

def get()
  return "#{@name}:#{@body}\r\n"
end

#set(name, body) ⇒ Object



483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
# File 'lib/circular-mail.rb', line 483

def set(name, body)
  case name
    when 'From'       # from
      CircularMail::die("Inappropriate value for 'From' header field!") if CircularMail::config('strictness') && CircularMail::config('header_address_validation').match(body).nil?
    when 'Sender'     # sender
      CircularMail::die("Inappropriate value for 'Sender' header field!") if CircularMail::config('strictness') && CircularMail::config('header_address_validation').match(body).nil?
    when 'Reply-To'   # reply-to
      CircularMail::die("Inappropriate value for 'Reply-To' header field!") if CircularMail::config('strictness') && CircularMail::config('email_validation').match(body).nil?
    when 'To'         # to
      CircularMail::die("Inappropriate value for 'To' header field!") if CircularMail::config('strictness') && CircularMail::config('header_address_validation').match(body).nil?
    when 'Cc'         # cc
      CircularMail::die("Inappropriate value for 'Cc' header field!") if CircularMail::config('strictness') && CircularMail::config('header_address_validation').match(body).nil?
    when 'Bcc'        # bcc
      CircularMail::die("Inappropriate value for 'Bcc' header field!") if CircularMail::config('strictness') && CircularMail::config('header_address_validation').match(body).nil?
    when 'Message-ID' # message-id
      CircularMail::die("Inappropriate value for 'Message-ID' header field!") if CircularMail::config('strictness') && CircularMail::config('header_msgid_validation').match(body).nil?
    when 'Subject'    # subject unstructured
      CircularMail::die("Inappropriate value for 'Subject' header field!") if CircularMail::config('strictness') && CircularMail::config('header_unstructured_validation').match(body).nil?
    when 'Comments'   # comments unstructured
      CircularMail::die("Inappropriate value for 'Comments' header field!") if CircularMail::config('strictness') && CircularMail::config('header_unstructured_validation').match(body).nil?
    when 'Date'       # orig-date
      CircularMail::die("Inappropriate value for 'Message-ID' header field!") if CircularMail::config('strictness') && CircularMail::config('header_date_validation').match(body).nil?
    when 'MIME-Version'
      CircularMail::die("Only MIME 1.0 is supported in CircularMail!") if CircularMail::config('strictness') && body != '1.0'
    when 'Content-Type'
      CircularMail::die("Inappropriate value for 'Content-Type' header field!") if CircularMail::config('strictness') && CircularMail::config('header_content_type_validation').match(body).nil?
    when 'Content-Transfer-Encoding'
      CircularMail::die("Inappropriate value for 'Content-Transfer-Encoding' header field!") if CircularMail::config('strictness') && CircularMail::config('header_content_encoding_validation').match(body).nil?
    when 'Content-ID'
      CircularMail::die("Inappropriate value for 'Content-ID' header field!") if CircularMail::config('strictness') && CircularMail::config('header_msgid_validation').match(body).nil?
    when 'Content-Description'
      CircularMail::die("Inappropriate value for 'Content-Description' header field!") if CircularMail::config('strictness') && !CircularMail::check_charset(body, 'us-ascii')
    when 'Content-Disposition'
      CircularMail::die("Inappropriate value for 'Content-Disposition' header field!") if CircularMail::config('strictness') && !CircularMail::check_charset(body, 'us-ascii')
    else
      if CircularMail::config('strictness')
        CircularMail::die("Unsupported header field! Expected: #{CircularMail::config('valid_header_fields')}") unless CircularMail::config('valid_header_fields').include?(name)
      else
        name = CircularMail::config('fallback_header_field')
        body = CircularMail::config('fallback_header_body')
      end
  end

  if CircularMail::config('strictness')
    CircularMail::die("Header field body cannot contain CR, LF characters! (Don't worry, it will be appended automatically)") if body.include?("\r") || body.include?("\n")
  else
    body.gsub!("\r", "")
    body.gsub!("\n", "")
  end

  @name = name
  @body = body
end