Sha256: de44dc4d7ef3e0a1e424faa9fbccdcff01f243025081699a818730170d532233

Contents?: true

Size: 927 Bytes

Versions: 1

Compression:

Stored size: 927 Bytes

Contents

require 'mail'
require 'json'
require_relative 'accessors'

module MailXSMTPAPI
  class Field < ::Mail::UnstructuredField
    FIELD_NAME = 'x-smtpapi'
    CAPITALIZED_FIELD = 'X-SMTPAPI'

    # Accessors
    include Recipients
    include Substitutions
    include UniqueArguments
    include Category
    include AsmGroupId
    include Filters
    include Sections

    def initialize(value = nil, charset = 'utf-8')
      self.charset = charset
      self.name = CAPITALIZED_FIELD
      self.value = value || {}
    end

    def encoded
      if empty?
        ''
      else
        "#{wrapped_value}\r\n"
      end
    end

    # to take advantage of folding, decoded must return a string of
    # JSON with extra spaces inserted for line wrapping.
    def decoded
      JSON.generate(value).gsub(/(["\]}])([,:])(["\[{])/, '\\1\\2 \\3')
    end

    def empty?
      value.values.all?{|v| !v || v.empty? }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mail-x_smtpapi-1.1.0 lib/mail_x_smtpapi/field.rb