Class: Edgar
- Inherits:
-
Object
- Object
- Edgar
- 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
-
#num_results ⇒ Object
Returns the value of attribute num_results.
-
#referer ⇒ Object
Returns the value of attribute referer.
Instance Method Summary collapse
-
#initialize(referer = '', num_results = 100) ⇒ Edgar
constructor
A new instance of Edgar.
- #search(query) ⇒ Object
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_results ⇒ Object
Returns the value of attribute num_results.
32 33 34 |
# File 'lib/edgar.rb', line 32 def num_results @num_results end |
#referer ⇒ Object
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 |