Class: CVE::Crawler

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

Constant Summary collapse

DATA_FEED_DEFAULT =
URI('https://nvd.nist.gov/download/nvd-rss.xml')
DATA_FEED_ANALYZED =
URI('https://nvd.nist.gov/download/nvd-rss-analyzed.xml')

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type, verify_cert, user_agent) ⇒ Crawler

Returns a new instance of Crawler.



9
10
11
12
13
# File 'lib/cve_crawler/cve_crawler.rb', line 9

def initialize(type, verify_cert, user_agent)
  @crawl_url = type.downcase == 'analyzed' ? DATA_FEED_ANALYZED : DATA_FEED_DEFAULT
  @verify_cert = verify_cert ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE
  @user_agent = user_agent
end

Instance Attribute Details

#crawl_urlObject (readonly)

Returns the value of attribute crawl_url.



15
16
17
# File 'lib/cve_crawler/cve_crawler.rb', line 15

def crawl_url
  @crawl_url
end

#user_agentObject (readonly)

Returns the value of attribute user_agent.



15
16
17
# File 'lib/cve_crawler/cve_crawler.rb', line 15

def user_agent
  @user_agent
end

#verify_certObject (readonly)

Returns the value of attribute verify_cert.



15
16
17
# File 'lib/cve_crawler/cve_crawler.rb', line 15

def verify_cert
  @verify_cert
end

Instance Method Details

#crawlObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/cve_crawler/cve_crawler.rb', line 17

def crawl
  http = Net::HTTP.new(@crawl_url.host, @crawl_url.port)
  http.use_ssl = @crawl_url.scheme == 'https'

  if http.use_ssl?
    http.verify_mode = @verify_cert
  end

  request = Net::HTTP::Get.new(@crawl_url, {'User-Agent' => @user_agent})
  response = http.request(request)

  response.value  # Raise an error if status is not 200

  response
end

#inspectObject



33
34
35
# File 'lib/cve_crawler/cve_crawler.rb', line 33

def inspect
  "#<CVE::Crawler url=#{@crawl_url.to_s}>"
end