class Coppertone::Modifier::Exp

Exp modifier - specifying a message to be returned in case of failure

Constants

ASCII_REGEXP

Public Class Methods

create(attributes) click to toggle source
# File lib/coppertone/modifier/exp.rb, line 7
def self.create(attributes)
  new(attributes)
end
label() click to toggle source
# File lib/coppertone/modifier/exp.rb, line 37
def self.label
  'exp'
end

Public Instance Methods

evaluate(macro_context, request_context) click to toggle source
# File lib/coppertone/modifier/exp.rb, line 12
def evaluate(macro_context, request_context)
  target_name =
    target_name_from_domain_spec(macro_context, request_context)
  return nil unless target_name

  macro_string = lookup_macro_string(target_name, request_context)
  return nil unless macro_string

  expanded = macro_string.expand(macro_context, request_context)
  return nil unless ASCII_REGEXP.match?(expanded)

  expanded
rescue DNSAdapter::Error
  nil
end
lookup_macro_string(target_name, request_context) click to toggle source
# File lib/coppertone/modifier/exp.rb, line 28
def lookup_macro_string(target_name, request_context)
  records =
    request_context.dns_client.fetch_txt_records(target_name)
  return nil if records.empty?
  return nil if records.size > 1

  MacroString.new(records.first[:text])
end