makasi 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f1d8cd6806f4cf0dff6229a06860871637114ff6
4
- data.tar.gz: 73dee94fad87099d4562381c85d9451554e28e1e
3
+ metadata.gz: b5526f72e030783699186fd2b99ee0a9a9eb4ee5
4
+ data.tar.gz: 3c20ffec77ebc98474facacb2fbeee196efc2ec7
5
5
  SHA512:
6
- metadata.gz: 45a003e1e07c7d4320c3280fee68670da796f45f22ee9d8dd61054d7e3bb78a41215ee47737e51a40e39266dd5eb06fdc41eeb36c9bb4595a6c8febb00cedb69
7
- data.tar.gz: 1229e154569406c45bba8be8659603be501152bf5d51d901ec9de043d9f005a694050922e91301062db86d84e66bbf27c7306510e07d45c7763b17b2677f3ff1
6
+ metadata.gz: e70a7df63169995ce69f380aa573dca3394df8d2a081f5c7b1c4ca7cc72d3bce5560acbc48dc75c4e8c4a1a9b898fc1fb5f934a97bcb97b336f3462811c95245
7
+ data.tar.gz: f7370894bf1e9d7af162a6818f99bc42621e037cb08f0b22c85734e611e77449d91c07e54420219767c584862723df630ead21d95b76b16df4a75e28c02b27b0
data/lib/makasi.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "asari"
2
+ require "makasi/asari_patch"
2
3
  require_relative "../app/models/cloud_search_document"
3
4
  require "makasi/asari_client"
4
5
  require "makasi/asari_result"
@@ -0,0 +1,69 @@
1
+ # Allow the new api syntax of version 2013-01-01
2
+
3
+ class Asari
4
+ class Collection
5
+ def initialize(httparty_response, page_size)
6
+ resp = httparty_response.parsed_response
7
+ @total_entries = resp["hits"]["found"]
8
+ @page_size = page_size
9
+
10
+ complete_pages = (@total_entries / @page_size)
11
+ @total_pages = (@total_entries % @page_size > 0) ? complete_pages + 1 : complete_pages
12
+ # There's always one page, even for no results
13
+ @total_pages = 1 if @total_pages == 0
14
+
15
+ start = resp["hits"]["start"]
16
+ @current_page = (start / page_size) + 1
17
+ if resp["hits"]["hit"].first && resp["hits"]["hit"].first["fields"]
18
+ @data = {}
19
+ resp["hits"]["hit"].each { |hit| @data[hit["id"]] = hit["fields"]}
20
+ else
21
+ @data = resp["hits"]["hit"].map { |hit| hit["id"] }
22
+ end
23
+ end
24
+ end
25
+
26
+ def search(term, options = {})
27
+ return Asari::Collection.sandbox_fake if self.class.mode == :sandbox
28
+ term,options = "",term if term.is_a?(Hash) and options.empty?
29
+
30
+ if options[:filter]
31
+ bq = boolean_query(options[:filter])
32
+ bq = "(and '#{term.to_s.gsub("'", " ")}' #{bq})" if term.present?
33
+ end
34
+ page_size = options[:page_size].nil? ? 10 : options[:page_size].to_i
35
+
36
+ url = "http://search-#{search_domain}.#{aws_region}.cloudsearch.amazonaws.com/#{api_version}/search"
37
+ if options[:filter]
38
+ url += "?q.parser=structured&q=#{CGI.escape(bq)}"
39
+ else
40
+ url += "?q=#{CGI.escape(term.to_s)}"
41
+ end
42
+ url += "&size=#{page_size}"
43
+ url += "&return-fields=#{options[:return_fields].join ','}" if options[:return_fields]
44
+
45
+ if options[:page]
46
+ start = (options[:page].to_i - 1) * page_size
47
+ url << "&start=#{start}"
48
+ end
49
+
50
+ if options[:rank]
51
+ rank = normalize_rank(options[:rank])
52
+ url << "&rank=#{rank}"
53
+ end
54
+
55
+ begin
56
+ response = HTTParty.get(url)
57
+ rescue Exception => e
58
+ ae = Asari::SearchException.new("#{e.class}: #{e.message} (#{url})")
59
+ ae.set_backtrace e.backtrace
60
+ raise ae
61
+ end
62
+
63
+ unless response.response.code == "200"
64
+ raise Asari::SearchException.new("#{response.response.code}: #{response.response.msg} (#{url})")
65
+ end
66
+
67
+ Asari::Collection.new(response, page_size)
68
+ end
69
+ end
@@ -1,3 +1,3 @@
1
1
  module Makasi
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
data/makasi.gemspec CHANGED
@@ -20,6 +20,6 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.8"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_dependency "asari"
23
+ spec.add_dependency "asari", "0.10.4"
24
24
  spec.add_dependency "sitemap_generator"
25
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: makasi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nataliia Kumeiko
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: asari
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 0.10.4
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 0.10.4
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: sitemap_generator
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -84,6 +84,7 @@ files:
84
84
  - bin/setup
85
85
  - lib/makasi.rb
86
86
  - lib/makasi/asari_client.rb
87
+ - lib/makasi/asari_patch.rb
87
88
  - lib/makasi/asari_result.rb
88
89
  - lib/makasi/config.rb
89
90
  - lib/makasi/railtie.rb