Class: Blekko::Search

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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

#blekkoObject

Returns the value of attribute blekko.



9
10
11
# File 'lib/blekko-search/search.rb', line 9

def blekko
  @blekko
end

#queryObject

Returns the value of attribute query.



9
10
11
# File 'lib/blekko-search/search.rb', line 9

def query
  @query
end

#resultsObject

Returns the value of attribute results.



9
10
11
# File 'lib/blekko-search/search.rb', line 9

def results
  @results
end

#slashtagsObject

Returns the value of attribute slashtags.



9
10
11
# File 'lib/blekko-search/search.rb', line 9

def slashtags
  @slashtags
end

Instance Method Details

#auth_paramObject



54
55
56
# File 'lib/blekko-search/search.rb', line 54

def auth_param
  blekko.api_key ? "auth=#{blekko.api_key}" : nil
end

#escaped_queryObject



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_searchesObject



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_paramObject



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

#searchObject



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_urlObject



70
71
72
# File 'lib/blekko-search/search.rb', line 70

def web_url
  blekko.protocol + blekko.host + PREFIX + escaped_query
end