class SPF::Result
Constants
- ATEXT_PATTERN
- DOT_ATOM_PATTERN
- RECEIVED_SPF_HEADER_IDENTITY_KEY_NAMES_BY_SCOPE
- RECEIVED_SPF_HEADER_NAME
- RECEIVED_SPF_HEADER_SCOPE_NAMES_BY_SCOPE
- RESULT_CLASSES
Attributes
request[R]
result_text[R]
server[R]
Public Class Methods
new(args = [])
click to toggle source
# File lib/spf/result.rb, line 124 def initialize(args = []) @server = args.shift if args.any? unless self.instance_variable_defined?(:@server) raise SPF::OptionRequiredError.new('SPF server object required') end @request = args.shift if args.any? unless self.instance_variable_defined?(:@request) raise SPF::OptionRequiredError.new('Request object required') end @result_text = args.shift if args.any? end
Public Instance Methods
is_code(code)
click to toggle source
# File lib/spf/result.rb, line 155 def is_code(code) return self.isa_by_name(code.downcase) end
isa_by_name(name)
click to toggle source
# File lib/spf/result.rb, line 149 def isa_by_name(name) suspect_class = self.klass(name.downcase) return false unless suspect_class return suspect_class === self end
klass(name=nil)
click to toggle source
# File lib/spf/result.rb, line 140 def klass(name=nil) if name name = name.to_sym if String === name return RESULT_CLASSES[name] else return name end end
local_explanation()
click to toggle source
# File lib/spf/result.rb, line 163 def local_explanation return @local_explanation if self.instance_variable_defined?(:@local_explanation) # Prepare local explanation: request = self.request local_explanation = request.state(:local_explanation) if local_explanation local_explanation = sprintf('%s (%s)', local_explanation.expand, @text) else local_explanation = @text end # Resolve authority domains of root-request and bottom sub-requests: root_request = request.root_request local_explanation = (request == root_request or not root_request) ? sprintf('%s: %s', request.authority_domain, local_explanation) : sprintf('%s ... %s: %s', root_request.authority_domain, request.authority_domain, local_explanation) return @local_explanation = SPF::Util.sanitize_string(local_explanation) end
name()
click to toggle source
# File lib/spf/result.rb, line 136 def name return self.code end
received_spf_header()
click to toggle source
# File lib/spf/result.rb, line 184 def received_spf_header return @received_spf_header if self.instance_variable_defined?(:@received_spf_header) scope_name = self.received_spf_header_scope_names_by_scope[@request.scope] identify_key_name = self.received_spf_header_identity_key_names_by_scope[@request.scope] info_pairs = [ :receiver => @server.hostname || 'unknown', :identity => scope_name, identity_key_name.to_sym => @request.identity, :client_ip => SPF::Util.ip_address_to_string(@request.ip_address) ] if @request.scope != :helo and @request.helo_identity info_pairs[:helo] = @request.helo_identity end info_string = '' while info_pairs.any? key = info_pairs.shift value = info_pairs.shift info_string += '; ' unless info_string.blank? if value !~ /^#{DOT_ATOM_PATTERN}$/o value.gsub!(/(["\\])/, "\\#{$1}") # Escape '\' and '"' characters. value = "\"#{value}\"" # Double-quote value. end info_string += "#{key}=#{value}" end return @received_spf_header = sprintf( '%s: %s (%s) %s', @received_spf_header_name, self.code, self.local_explanation, info_string ) end
to_s()
click to toggle source
Calls superclass method
# File lib/spf/result.rb, line 159 def to_s return sprintf('%s (%s)', self.name, SPF::Util.sanitize_string(super.to_s)) end