Class: Coppertone::RecordEvaluator
- Inherits:
-
Object
- Object
- Coppertone::RecordEvaluator
show all
- Defined in:
- lib/coppertone/record_evaluator.rb
Overview
A helper class for finding SPF records for a domain.
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of RecordEvaluator.
6
7
8
|
# File 'lib/coppertone/record_evaluator.rb', line 6
def initialize(record)
@record = record
end
|
Instance Attribute Details
#record ⇒ Object
Returns the value of attribute record.
4
5
6
|
# File 'lib/coppertone/record_evaluator.rb', line 4
def record
@record
end
|
Instance Method Details
#add_default_exp(result) ⇒ Object
43
44
45
46
|
# File 'lib/coppertone/record_evaluator.rb', line 43
def add_default_exp(result)
result.explanation = Coppertone.config.default_explanation
result
end
|
#add_exp_to_result(result, macro_context, request_context) ⇒ Object
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/coppertone/record_evaluator.rb', line 32
def add_exp_to_result(result, macro_context, request_context)
result = add_default_exp(result)
return result unless record.exp
computed_exp = record.exp.evaluate(macro_context, request_context)
result.explanation = computed_exp if computed_exp
result
rescue Coppertone::Error
result
end
|
#directive_result(macro_context, request_context) ⇒ Object
22
23
24
25
26
|
# File 'lib/coppertone/record_evaluator.rb', line 22
def directive_result(macro_context, request_context)
record.directives.reduce(Result.none) do |memo, d|
memo.none? ? d.evaluate(macro_context, request_context) : memo
end
end
|
#evaluate(macro_context, request_context) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/coppertone/record_evaluator.rb', line 10
def evaluate(macro_context, request_context)
result = directive_result(macro_context, request_context)
return result unless result.none? || result.fail?
if result.fail?
evaluate_fail_result(result, macro_context, request_context)
else
evaluate_none_result(result, macro_context, request_context)
end
end
|
#evaluate_fail_result(result, macro_context, request_context) ⇒ Object
28
29
30
|
# File 'lib/coppertone/record_evaluator.rb', line 28
def evaluate_fail_result(result, macro_context, request_context)
add_exp_to_result(result, macro_context, request_context)
end
|
#evaluate_none_result(result, macro_context, request_context) ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/coppertone/record_evaluator.rb', line 54
def evaluate_none_result(result, macro_context, request_context)
return result unless follow_redirect?
finder =
Coppertone::RedirectRecordFinder.new(record.redirect, macro_context,
request_context)
raise InvalidRedirectError unless finder.target && finder.record
rc = macro_context.with_domain(finder.target)
RecordEvaluator.new(finder.record).evaluate(rc, request_context)
end
|
#follow_redirect? ⇒ Boolean
48
49
50
51
52
|
# File 'lib/coppertone/record_evaluator.rb', line 48
def follow_redirect?
record.redirect && !record.include_all?
end
|