Class: Wepawet::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/wepawet.rb

Instance Method Summary collapse

Constructor Details

#initialize(config = { 'wepawetSubmitUrl' => 'http://wepawet.cs.ucsb.edu/services/upload.php', 'wepawetQueryUrl' => 'http://wepawet.cs.ucsb.edu/services/query.php', 'wepawetDomainUrl' => 'http://wepawet.cs.ucsb.edu/services/domain.php', 'wepawetUrlUrl' => 'http://wepawet.cs.ucsb.edu/services/url.php', }) ⇒ Query

Returns a new instance of Query.



67
68
69
70
71
72
73
74
# File 'lib/wepawet.rb', line 67

def initialize(config = {
  'wepawetSubmitUrl' => 'http://wepawet.cs.ucsb.edu/services/upload.php', 
  'wepawetQueryUrl' => 'http://wepawet.cs.ucsb.edu/services/query.php',
  'wepawetDomainUrl' => 'http://wepawet.cs.ucsb.edu/services/domain.php',
  'wepawetUrlUrl' => 'http://wepawet.cs.ucsb.edu/services/url.php',
})
  @config = config
end

Instance Method Details

#_parse_response(doc) ⇒ Object



103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/wepawet.rb', line 103

def _parse_response(doc)
  xml = XML::Document.string(doc)
  hash = {}
  xml.child.children.each do |node|
    if node.name =~ /\w/ and node.child
      hash[node.name] = node.child.content
    end
  end
  hash
rescue Exception
  return nil
end

#by_domain(domain) ⇒ Object



95
96
97
# File 'lib/wepawet.rb', line 95

def by_domain(domain)
  by_whatever('domain',domain)
end

#by_taskid(taskid) ⇒ Object Also known as: by_hash



89
90
91
# File 'lib/wepawet.rb', line 89

def by_taskid(taskid)
  by_whatever('hash',taskid)
end

#by_url(url) ⇒ Object



99
100
101
# File 'lib/wepawet.rb', line 99

def by_url(url)
  by_whatever('url', CGI.escape(url))
end

#by_whatever(whatever, value) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/wepawet.rb', line 76

def by_whatever(whatever, value)
  params = {'resource_type' => 'js', whatever => value}
  urlkey = (whatever == 'hash') ? 'wepawetQueryUrl' : (whatever == 'domain') ? 'wepawetDomainUrl' : (whatever == 'url') ? 'wepawetUrlUrl' : 'wepawetQueryUrl'
  uri = URI.parse(@config[urlkey]+"?"+params.map{|k,v| "#{k}=#{v}"}.join("&"))
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = (uri.scheme == 'https')
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  request = Net::HTTP::Get.new(uri.path+"?"+uri.query)
  request.add_field("User-Agent", "Ruby/#{RUBY_VERSION} wepawet gem v#{Wepawet::VERSION}")
  response = http.request(request)
  _parse_response(response.body)
end