Class: Edgar

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

Constant Summary collapse

API_PATH =

API to Edgar search API

Example:

>> Edgar.new('[Referer]').search('nano fibers')
=> [ #<EdgarResult:...>, ... ]

Arguments:

referer: (String)
num_results: (Integer+)
'https://searchwww.sec.gov/EDGARFSClient/jsp/EDGAR_MainAccess.jsp'
CSS_ATTRS =
[
  '#ifrm2 tr i.blue',
  '#ifrm2 tr a.filing',
  '#ifrm2 tr i.small'
]
CSS_TYPES =
{
  :date => 0,
  :title_url => 1,
  :abstract => 2
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(referer = '', num_results = 100) ⇒ Edgar

Returns a new instance of Edgar.



34
35
36
37
# File 'lib/edgar.rb', line 34

def initialize(referer = '', num_results = 100)
  @referer = referer
  @num_results = num_results
end

Instance Attribute Details

#num_resultsObject

Returns the value of attribute num_results.



32
33
34
# File 'lib/edgar.rb', line 32

def num_results
  @num_results
end

#refererObject

Returns the value of attribute referer.



32
33
34
# File 'lib/edgar.rb', line 32

def referer
  @referer
end

Instance Method Details

#search(query) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/edgar.rb', line 39

def search(query)
  params = "?search_text=#{CGI.escape(query)}&sort=Date&formType=1&isAdv=true&stemming=true&numResults=#{@num_results}"
  response = open(API_PATH + params, 'Referer' => @referer)
  return nil if response.class.superclass == Net::HTTPServerError
  doc = Nokogiri::HTML(response)
  # check that results were returned
  no_results = doc.css('#ifrm2 font.normalbold')[0]
  return [] if no_results && no_results.content == 'No Results were Found.'
  # fetch number of results so we slice properly
  num_returned = doc.css('#header td:first > font.normalbold')[0]
  return [] if num_returned.nil?
  num_returned = num_returned.content.match(/- (\d+)/)[1].to_i
  build_results(doc, num_returned)
end