class Aquatone::Detector
Attributes
host[R]
resource[R]
Public Class Methods
descendants()
click to toggle source
# File lib/aquatone/detector.rb, line 18 def self.descendants detectors = ObjectSpace.each_object(Class).select { |klass| klass < self } detectors.sort { |x, y| x.meta[:service] <=> y.meta[:service] } end
meta()
click to toggle source
# File lib/aquatone/detector.rb, line 9 def self.meta @meta || fail(MetadataNotSetError, "Metadata has not been set") end
meta=(meta)
click to toggle source
# File lib/aquatone/detector.rb, line 13 def self.meta=(meta) validate_metadata(meta) @meta = meta end
new(host, resource)
click to toggle source
# File lib/aquatone/detector.rb, line 28 def initialize(host, resource) @host = host @resource = resource end
sluggified_name()
click to toggle source
# File lib/aquatone/detector.rb, line 23 def self.sluggified_name return meta[:slug].downcase if meta[:slug] meta[:service].strip.downcase.gsub(/[^a-z0-9]+/, '-').gsub("--", "-") end
Protected Class Methods
validate_metadata(meta)
click to toggle source
# File lib/aquatone/detector.rb, line 85 def self.validate_metadata(meta) fail InvalidMetadataError, "Metadata is not a hash" unless meta.is_a?(Hash) fail InvalidMetadataError, "Metadata is empty" if meta.empty? fail InvalidMetadataError, "Metadata is missing key: service" unless meta.key?(:service) fail InvalidMetadataError, "Metadata is missing key: service_website" unless meta.key?(:service_website) fail InvalidMetadataError, "Metadata is missing key: author" unless meta.key?(:author) fail InvalidMetadataError, "Metadata is missing key: description" unless meta.key?(:description) end
Public Instance Methods
positive?()
click to toggle source
# File lib/aquatone/detector.rb, line 37 def positive? run rescue false end
run()
click to toggle source
# File lib/aquatone/detector.rb, line 33 def run fail NotImplementedError end
Protected Instance Methods
apex_resource?()
click to toggle source
# File lib/aquatone/detector.rb, line 49 def apex_resource? resource.is_a?(Resolv::DNS::Resource::IN::A) end
cname_resource?()
click to toggle source
# File lib/aquatone/detector.rb, line 45 def cname_resource? resource.is_a?(Resolv::DNS::Resource::IN::CNAME) end
failure(message)
click to toggle source
# File lib/aquatone/detector.rb, line 81 def failure(message) fail Error, message end
get_request(uri, options={})
click to toggle source
# File lib/aquatone/detector.rb, line 57 def get_request(uri, options={}) options = { :timeout => 10 }.merge(options) Aquatone::HttpClient.get(uri, options) end
post_request(uri, body=nil, options={})
click to toggle source
# File lib/aquatone/detector.rb, line 64 def post_request(uri, body=nil, options={}) options = { :body => body, :timeout => 10 }.merge(options) Aquatone::HttpClient.post(uri, options) end
random_sleep(seconds)
click to toggle source
# File lib/aquatone/detector.rb, line 76 def random_sleep(seconds) random_sleep = ((1 - (rand(30) * 0.01)) * seconds.to_i) sleep(random_sleep) end
resource_value()
click to toggle source
# File lib/aquatone/detector.rb, line 53 def resource_value cname_resource? ? resource.name.to_s : resource.address.to_s end
url_escape(string)
click to toggle source
# File lib/aquatone/detector.rb, line 72 def url_escape(string) CGI.escape(string) end