class Coppertone::RequestContext

A container for information that should span the lifetime of an SPF check. This include the DNS client, the locale used for error messages, limits for DNS requests of different types, and limiters that ensure those limits are not exceeded across the lifetime of the request.

Public Class Methods

new(options = {}) click to toggle source
# File lib/coppertone/request_context.rb, line 10
def initialize(options = {})
  @options = (options || {}).dup
end

Public Instance Methods

dns_client() click to toggle source
# File lib/coppertone/request_context.rb, line 34
def dns_client
  @dns_client ||=
    if @options[:dns_client]
      @options[:dns_client]
    elsif @options[:dns_client_class]
      @options[:dns_client_class].new
    elsif Coppertone.config.dns_client_class
      Coppertone.config.dns_client_class.new
    else
      DNSAdapter::ResolvClient.new
    end
end
dns_lookups_per_mx_mechanism_limit() click to toggle source
# File lib/coppertone/request_context.rb, line 22
def dns_lookups_per_mx_mechanism_limit
  config_value(:dns_lookups_per_mx_mechanism_limit)
end
dns_lookups_per_ptr_mechanism_limit() click to toggle source
# File lib/coppertone/request_context.rb, line 26
def dns_lookups_per_ptr_mechanism_limit
  config_value(:dns_lookups_per_ptr_mechanism_limit)
end
message_locale() click to toggle source
# File lib/coppertone/request_context.rb, line 30
def message_locale
  config_value(:message_locale)
end
register_dns_lookup_term() click to toggle source
# File lib/coppertone/request_context.rb, line 14
def register_dns_lookup_term
  dns_lookup_term_count_limiter.increment!
end
register_void_dns_result() click to toggle source
# File lib/coppertone/request_context.rb, line 18
def register_void_dns_result
  void_dns_result_count_limiter.increment!
end

Private Instance Methods

config_value(k) click to toggle source
# File lib/coppertone/request_context.rb, line 61
def config_value(k)
  return @options[k] if @options.key?(k)

  Coppertone.config.send(k)
end
dns_lookup_term_count_limiter() click to toggle source
# File lib/coppertone/request_context.rb, line 49
def dns_lookup_term_count_limiter
  limit = config_value(:terms_requiring_dns_lookup_limit)
  @dns_lookup_term_count_limiter ||=
    Coppertone::RequestCountLimiter.new(limit, 'DNS lookup term')
end
void_dns_result_count_limiter() click to toggle source
# File lib/coppertone/request_context.rb, line 55
def void_dns_result_count_limiter
  limit = config_value(:void_dns_result_limit)
  @void_dns_result_count_limiter ||=
    Coppertone::RequestCountLimiter.new(limit, 'DNS lookup term')
end