37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/resurfaceio/http_rules.rb', line 37
def self.parse_rule(r)
if r.nil? || r.match(REGEX_BLANK_OR_COMMENT)
nil
elsif r.match(REGEX_ALLOW_HTTP_URL)
HttpRule.new('allow_http_url')
elsif (m = r.match(REGEX_COPY_SESSION_FIELD))
HttpRule.new('copy_session_field', nil, parse_regex(r, m[1]))
elsif (m = r.match(REGEX_REMOVE))
HttpRule.new('remove', parse_regex(r, m[1]))
elsif (m = r.match(REGEX_REMOVE_IF))
HttpRule.new('remove_if', parse_regex(r, m[1]), parse_regex(r, m[2]))
elsif (m = r.match(REGEX_REMOVE_IF_FOUND))
HttpRule.new('remove_if_found', parse_regex(r, m[1]), parse_regex_find(r, m[2]))
elsif (m = r.match(REGEX_REMOVE_UNLESS))
HttpRule.new('remove_unless', parse_regex(r, m[1]), parse_regex(r, m[2]))
elsif (m = r.match(REGEX_REMOVE_UNLESS_FOUND))
HttpRule.new('remove_unless_found', parse_regex(r, m[1]), parse_regex_find(r, m[2]))
elsif (m = r.match(REGEX_REPLACE))
HttpRule.new('replace', parse_regex(r, m[1]), parse_regex_find(r, m[2]), parse_string(r, m[3]))
elsif (m = r.match(REGEX_SAMPLE))
m1 = m[1].to_i
raise RuntimeError.new("Invalid sample percent: #{m1}") if m1 < 1 || m1 > 99
HttpRule.new('sample', nil, m1)
elsif r.match(REGEX_SKIP_COMPRESSION)
HttpRule.new('skip_compression')
elsif r.match(REGEX_SKIP_SUBMISSION)
HttpRule.new('skip_submission')
elsif (m = r.match(REGEX_STOP))
HttpRule.new('stop', parse_regex(r, m[1]))
elsif (m = r.match(REGEX_STOP_IF))
HttpRule.new('stop_if', parse_regex(r, m[1]), parse_regex(r, m[2]))
elsif (m = r.match(REGEX_STOP_IF_FOUND))
HttpRule.new('stop_if_found', parse_regex(r, m[1]), parse_regex_find(r, m[2]))
elsif (m = r.match(REGEX_STOP_UNLESS))
HttpRule.new('stop_unless', parse_regex(r, m[1]), parse_regex(r, m[2]))
elsif (m = r.match(REGEX_STOP_UNLESS_FOUND))
HttpRule.new('stop_unless_found', parse_regex(r, m[1]), parse_regex_find(r, m[2]))
else
raise RuntimeError.new("Invalid rule: #{r}")
end
end
|