Class: Blekko::Search
- Inherits:
-
Object
- Object
- Blekko::Search
- Defined in:
- lib/blekko-search/search.rb
Constant Summary collapse
- DEFAULT_PAGE_SIZE =
100
- DEFAULT_PAGE_NUMBER =
0
- PREFIX =
"/ws/?q="
- RESPONSE_FORMAT =
"/json+/"
Instance Attribute Summary collapse
-
#blekko ⇒ Object
Returns the value of attribute blekko.
-
#query ⇒ Object
Returns the value of attribute query.
-
#results ⇒ Object
Returns the value of attribute results.
-
#slashtags ⇒ Object
Returns the value of attribute slashtags.
Instance Method Summary collapse
- #auth_param ⇒ Object
- #escaped_query ⇒ Object
-
#initialize(blekko, query, args = {}) ⇒ Search
constructor
A new instance of Search.
- #number_of_searches ⇒ Object
- #page_number_param(page_number) ⇒ Object
- #page_size_param ⇒ Object
- #params(page_number) ⇒ Object
- #path(page_number) ⇒ Object
- #search ⇒ Object
- #url(page_number) ⇒ Object
- #web_url ⇒ Object
Constructor Details
#initialize(blekko, query, args = {}) ⇒ Search
Returns a new instance of Search.
11 12 13 14 15 16 17 18 |
# File 'lib/blekko-search/search.rb', line 11 def initialize(blekko, query, args={}) args = {page_size: DEFAULT_PAGE_SIZE }.merge(args) @blekko = blekko @query = query @slashtags = *args[:slashtags] || [] @page_size = args[:page_size] @total_size = args[:total_size] || @page_size end |
Instance Attribute Details
#blekko ⇒ Object
Returns the value of attribute blekko.
9 10 11 |
# File 'lib/blekko-search/search.rb', line 9 def blekko @blekko end |
#query ⇒ Object
Returns the value of attribute query.
9 10 11 |
# File 'lib/blekko-search/search.rb', line 9 def query @query end |
#results ⇒ Object
Returns the value of attribute results.
9 10 11 |
# File 'lib/blekko-search/search.rb', line 9 def results @results end |
#slashtags ⇒ Object
Returns the value of attribute slashtags.
9 10 11 |
# File 'lib/blekko-search/search.rb', line 9 def @slashtags end |
Instance Method Details
#auth_param ⇒ Object
54 55 56 |
# File 'lib/blekko-search/search.rb', line 54 def auth_param blekko.api_key ? "auth=#{blekko.api_key}" : nil end |
#escaped_query ⇒ Object
42 43 44 |
# File 'lib/blekko-search/search.rb', line 42 def escaped_query CGI.escape(query + " ") + @slashtags.collect { |s| CGI.escape(s) }.join("+") + "+" end |
#number_of_searches ⇒ Object
38 39 40 |
# File 'lib/blekko-search/search.rb', line 38 def number_of_searches @number_of_searches ||= (@total_size.to_f / @page_size).ceil end |
#page_number_param(page_number) ⇒ Object
50 51 52 |
# File 'lib/blekko-search/search.rb', line 50 def page_number_param(page_number) "p=#{page_number}" if page_number > 0 end |
#page_size_param ⇒ Object
46 47 48 |
# File 'lib/blekko-search/search.rb', line 46 def page_size_param "ps=#{@page_size}" end |
#params(page_number) ⇒ Object
58 59 60 |
# File 'lib/blekko-search/search.rb', line 58 def params(page_number) [page_size_param, auth_param, page_number_param(page_number)].compact.join("&") end |
#path(page_number) ⇒ Object
66 67 68 |
# File 'lib/blekko-search/search.rb', line 66 def path(page_number) PREFIX + escaped_query + RESPONSE_FORMAT + params(page_number) end |
#search ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/blekko-search/search.rb', line 24 def search page_number = 0 number_of_searches.times do response = JSON.load(blekko.request(path(page_number))) if response['RESULT'] self.results += response['RESULT'].collect { |r| Blekko::SearchResult.new(r) } else return results end page_number += 1 end results[0,@total_size] end |
#url(page_number) ⇒ Object
62 63 64 |
# File 'lib/blekko-search/search.rb', line 62 def url(page_number) blekko.protocol + blekko.host + path(page_number) end |
#web_url ⇒ Object
70 71 72 |
# File 'lib/blekko-search/search.rb', line 70 def web_url blekko.protocol + blekko.host + PREFIX + escaped_query end |