82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/html_proofer/url_validator/external.rb', line 82
def response_handler(response, url, filenames)
method = response.request.options[:method]
href = response.request.base_url.to_s
response_code = response.code
response.body.delete!("\x00")
@logger.log(:debug, "Received a #{response_code} for #{href}")
return if @runner.options[:ignore_status_codes].include?(response_code)
if response_code.between?(200, 299)
@cache.add_external(href, filenames, response_code, "OK", true) unless check_hash_in_2xx_response(
href,
url,
response,
filenames,
)
elsif response.timed_out?
handle_timeout(href, filenames, response_code)
elsif response_code.zero?
handle_connection_failure(href, filenames, response_code, response.status_message)
elsif method == :head
queue_request(:get, url, filenames)
else
return if @runner.options[:only_4xx] && !response_code.between?(400, 499)
status_message = blank?(response.status_message) ? "" : ": #{response.status_message}"
msg = "External link #{href} failed#{status_message}"
add_failure(filenames, msg, response_code)
@cache.add_external(href, filenames, response_code, msg, false)
end
end
|