lib/relevance/tarantula/result.rb in relevance-tarantula-0.2.0 vs lib/relevance/tarantula/result.rb in relevance-tarantula-0.2.1
- old
+ new
@@ -9,37 +9,47 @@
hash.each do |k,v|
raise ArgumentError, k unless HASHABLE_ATTRS.member?(k)
self.instance_variable_set("@#{k}", v)
end
end
+
def short_description
[method,url].join(" ")
end
+
def sequence_number
@sequence_number ||= (self.class.next_number += 1)
end
+
def file_name
"#{sequence_number}.html"
end
+
def code
response && response.code
end
+
def body
response && response.body
end
+
def full_url
"#{DEFAULT_LOCALHOST}#{url}"
end
+
ALLOW_NNN_FOR = /^allow_(\d\d\d)_for$/
+
class << self
attr_accessor :next_number
+
def handle(result)
retval = result.dup
retval.success = successful?(result.response) || can_skip_error?(result)
retval.description = "Bad HTTP Response" unless retval.success
retval
end
+
def success_codes
%w{200 201 302 401}
end
# allow_errors_for is a hash
@@ -49,18 +59,19 @@
def can_skip_error?(result)
coll = allow_errors_for[result.code]
return false unless coll
coll.any? {|item| item === result.url}
end
+
def successful?(response)
success_codes.member?(response.code)
end
+
def method_missing(meth, *args)
super unless ALLOW_NNN_FOR =~ meth.to_s
(allow_errors_for[$1] ||= []).push(*args)
end
end
+
self.allow_errors_for = {}
self.next_number = 0
-
-
-end
\ No newline at end of file
+end