Class: CloudSearch::Searcher
- Inherits:
-
Object
- Object
- CloudSearch::Searcher
- Defined in:
- lib/cloud_search/searcher.rb
Instance Method Summary collapse
- #at_page(page) ⇒ Object
- #items_per_page ⇒ Object
- #page_number ⇒ Object
- #query ⇒ Object
- #search ⇒ Object
- #start ⇒ Object
- #url ⇒ Object
- #with_fields(*fields) ⇒ Object
- #with_items_per_page(items_per_page) ⇒ Object
- #with_query(query) ⇒ Object
Instance Method Details
#at_page(page) ⇒ Object
52 53 54 55 |
# File 'lib/cloud_search/searcher.rb', line 52 def at_page(page) @page_number = (page && page < 1) ? 1 : page self end |
#items_per_page ⇒ Object
48 49 50 |
# File 'lib/cloud_search/searcher.rb', line 48 def items_per_page @items_per_page or 10 end |
#page_number ⇒ Object
57 58 59 |
# File 'lib/cloud_search/searcher.rb', line 57 def page_number @page_number or 1 end |
#query ⇒ Object
34 35 36 |
# File 'lib/cloud_search/searcher.rb', line 34 def query @query or '' end |
#search ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/cloud_search/searcher.rb', line 4 def search response = SearchResponse.new EM.run do http = EM::HttpRequest.new(url).get http.callback do response.http_code = http.response_header.status response.body = JSON.parse(http.response) EM.stop end http.errback do response.http_code = http.error response.body = http.response EM.stop end end response.items_per_page = items_per_page response end |
#start ⇒ Object
61 62 63 64 |
# File 'lib/cloud_search/searcher.rb', line 61 def start return 0 if page_number <= 1 (items_per_page * page_number) - 1 end |
#url ⇒ Object
66 67 68 69 70 71 |
# File 'lib/cloud_search/searcher.rb', line 66 def url "#{CloudSearch.config.search_url}/search".tap do |u| u.concat("?q=#{CGI.escape(query)}&size=#{items_per_page}&start=#{start}") u.concat("&return-fields=#{CGI.escape(@fields.join(","))}") unless @fields.nil? or @fields.empty? end end |
#with_fields(*fields) ⇒ Object
38 39 40 41 |
# File 'lib/cloud_search/searcher.rb', line 38 def with_fields(*fields) @fields = fields self end |
#with_items_per_page(items_per_page) ⇒ Object
43 44 45 46 |
# File 'lib/cloud_search/searcher.rb', line 43 def with_items_per_page(items_per_page) @items_per_page = items_per_page self end |
#with_query(query) ⇒ Object
29 30 31 32 |
# File 'lib/cloud_search/searcher.rb', line 29 def with_query(query) @query = query self end |