Class: SearchEngine
- Inherits:
-
Object
- Object
- SearchEngine
- Defined in:
- lib/search_engine.rb
Instance Attribute Summary collapse
-
#uri ⇒ Object
Returns the value of attribute uri.
Instance Method Summary collapse
- #build_url(query, page) ⇒ Object
- #extract_fields(fields, hash_results) ⇒ Object
- #get_result_count(query) ⇒ Object
- #get_search_time(query) ⇒ Object
-
#initialize ⇒ SearchEngine
constructor
A new instance of SearchEngine.
- #search(query, *fields, pages: 1) ⇒ Object
Constructor Details
#initialize ⇒ SearchEngine
Returns a new instance of SearchEngine.
8 9 10 11 |
# File 'lib/search_engine.rb', line 8 def initialize self.uri = "http://www.google.com/uds/GwebSearch?start=0"\ "&rsz=large&hl=en&key=notsupplied&v=1.0&" end |
Instance Attribute Details
#uri ⇒ Object
Returns the value of attribute uri.
5 6 7 |
# File 'lib/search_engine.rb', line 5 def uri @uri end |
Instance Method Details
#build_url(query, page) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/search_engine.rb', line 31 def build_url(query, page) start = (page - 1) * 8 self.uri.chomp! "&rsz=large&hl=en&key=notsupplied&v=1.0&" while self.uri[-1, 1] != "=" do self.uri.chop! end self.uri << "#{start}&rsz=large&hl=en&key=notsupplied&v=1.0&" query.strip! q_uri = URI.encode_www_form('q' => query) return self.uri + q_uri + "&filter=1" end |
#extract_fields(fields, hash_results) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/search_engine.rb', line 48 def extract_fields(fields, hash_results) extracted_results = [] if fields.empty? raise "No fields given." else fields.each do |f| index = 0 hash_results.each do |hr| if hr.has_key?(f) extracted_results << hash_results[index][f] index += 1 end end end end return extracted_results end |
#get_result_count(query) ⇒ Object
69 70 71 72 |
# File 'lib/search_engine.rb', line 69 def get_result_count(query) cursor_hash = open_file(query) return cursor_hash[:responseData][:cursor][:resultCount] end |
#get_search_time(query) ⇒ Object
75 76 77 78 |
# File 'lib/search_engine.rb', line 75 def get_search_time(query) cursor_hash = open_file(query) return cursor_hash[:responseData][:cursor][:searchResultTime] end |
#search(query, *fields, pages: 1) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/search_engine.rb', line 14 def search(query, *fields, pages: 1) results = [] raise "No query given" if query.empty? for i in 1..pages uri = build_url(query, i) file = open(uri) my_hash = JSON.parse(file.read, symbolize_names: true) raise "Page is out of bounds" unless !my_hash[:responseData].nil? hash_results = my_hash[:responseData][:results] results << extract_fields(fields, hash_results) end return results end |