algoliasearch 1.2.5 → 1.2.7

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
- ---
2
- SHA1:
3
- metadata.gz: ffcea70e1e16052463f966167245f0d0412bb1d1
4
- data.tar.gz: a37adf050adb92682c8ddd48990b093606ba800d
5
- SHA512:
6
- metadata.gz: fc1fbead2ee31e7e503b7864d7779c9455d99f1925de7f5ca765c0a0229dc0c4b81680a9b814c029a0b06152b8729565dae1f8ecb342a07c46f650771ec4df07
7
- data.tar.gz: 79a73010bbaa3b99227c9693ea9f71ba9c6627b02faf4dd4a9f772bef98b0cb9af637e67e65049fa797d056bd22cafa6415b6a28db23164a1810c1e7a3a3288f
1
+ ---
2
+ SHA1:
3
+ data.tar.gz: 9ba635d167f32504ae01cdc6b161bc4af3826321
4
+ metadata.gz: 779df79fb8ac29c41faa695e8047406997981941
5
+ SHA512:
6
+ data.tar.gz: 4af3b2853e4efaa6c2c07b8bad88a257d6e1d138a32e9b97c98f261b0d53d1db9451af9e181bd05af4c8505d8a0a96a3254a042196938ef1f1971ea58bf28531
7
+ metadata.gz: 15393678441127859332d19835a3a05ac5cebb35fa567c9c9c8325f40818d021bee9fddae90fb924f98b5f80cb78c91e5e8c2f51ce2fa41521d4e3a3d4a7fb8c
data/.travis.yml CHANGED
@@ -3,6 +3,7 @@ branches:
3
3
  only:
4
4
  - master
5
5
  rvm:
6
+ - 1.8.7
6
7
  - 2.1.0
7
8
  - 2.0.0
8
9
  - 1.9.3
data/ChangeLog CHANGED
@@ -1,5 +1,16 @@
1
1
  CHANGELOG
2
2
 
3
+ 2014-03-24 1.2.7
4
+
5
+ * Ruby 1.8 compatibility
6
+
7
+ 2014-03-19 1.2.6
8
+
9
+ * Raise an exception if no APPLICATION_ID is provided
10
+ * Ability to get last API call errors
11
+ * Ability to send multiple queries using a single API call
12
+ * Secured API keys generation is now based on secured HMAC-SHA256
13
+
3
14
  2014-02-24 1.2.5
4
15
 
5
16
  * Ability to generate secured API key from a list of tags + optional user_token
data/Gemfile CHANGED
@@ -2,7 +2,7 @@ source 'http://rubygems.org'
2
2
 
3
3
  gem 'httpclient', '~> 2.3'
4
4
  gem 'json', '>= 1.5.1'
5
- gem 'rubysl', '~> 2.0', platform: :rbx
5
+ gem 'rubysl', '~> 2.0', :platform => :rbx
6
6
 
7
7
  group :development do
8
8
  gem 'coveralls'
data/README.md CHANGED
@@ -628,6 +628,8 @@ You can retrieve the logs of your last 1000 API calls and browse them using the
628
628
  puts Algolia.get_logs.to_json
629
629
  # Get last 100 log entries
630
630
  puts Algolia.get_logs(0, 100).to_json
631
+ # Get last 100 errors
632
+ puts Algolia.get_logs(0, 100, true).to_json
631
633
  ```
632
634
 
633
635
  Mock
@@ -6,12 +6,12 @@
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "algoliasearch"
9
- s.version = "1.2.5"
9
+ s.version = "1.2.7"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Algolia"]
14
- s.date = "2014-02-24"
14
+ s.date = "2014-03-24"
15
15
  s.description = "A simple Ruby client for the algolia.com REST API"
16
16
  s.email = "contact@algolia.com"
17
17
  s.extra_rdoc_files = [
@@ -3,6 +3,7 @@ require 'algolia/error'
3
3
  require 'algolia/version'
4
4
  require 'json'
5
5
  require 'zlib'
6
+ require 'openssl'
6
7
 
7
8
  module Algolia
8
9
 
@@ -111,6 +112,8 @@ module Algolia
111
112
  defaulted = { :application_id => application_id, :api_key => api_key }
112
113
  defaulted.merge!(options)
113
114
 
115
+ raise ArgumentError.new("No APPLICATION_ID provided, please set :application_id") if defaulted[:application_id].nil?
116
+
114
117
  @@client = Client.new(defaulted)
115
118
  end
116
119
 
@@ -161,7 +164,23 @@ module Algolia
161
164
  tag_filters = tag_filters.map { |t| t.is_a?(Array) ? "(#{t.join(',')})" : t }.join(',')
162
165
  end
163
166
  raise ArgumentError.new('Attribute "tag_filters" must be a list of tags') if !tag_filters.is_a?(String)
164
- Digest::SHA256.hexdigest "#{private_api_key}#{tag_filters}#{user_token.to_s}"
167
+ OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new('sha256'), private_api_key, "#{tag_filters}#{user_token.to_s}")
168
+ end
169
+
170
+ #
171
+ # This method allows to query multiple indexes with one API call
172
+ #
173
+ # @param queries the array of hash representing the query and associated index name
174
+ # @param index_name_key the name of the key used to fetch the index_name (:index_name by default)
175
+ #
176
+ def Algolia.multiple_queries(queries, index_name_key = :index_name)
177
+ requests = {
178
+ :requests => queries.map do |query|
179
+ indexName = query.delete(index_name_key) || query.delete(index_name_key.to_s)
180
+ { :indexName => indexName, :params => Protocol.to_query(query) }
181
+ end
182
+ }
183
+ Algolia.client.post(Protocol.multiple_queries_uri, requests.to_json)
165
184
  end
166
185
 
167
186
  #
@@ -200,8 +219,8 @@ module Algolia
200
219
  # @param offset Specify the first entry to retrieve (0-based, 0 is the most recent log entry).
201
220
  # @param length Specify the maximum number of entries to retrieve starting at offset. Maximum allowed value: 1000.
202
221
  #
203
- def Algolia.get_logs(offset = 0, length = 10)
204
- Algolia.client.get(Protocol.logs(offset, length))
222
+ def Algolia.get_logs(offset = 0, length = 10, only_errors = false)
223
+ Algolia.client.get(Protocol.logs(offset, length, only_errors))
205
224
  end
206
225
 
207
226
  # List all existing user keys with their associated ACLs
data/lib/algolia/index.rb CHANGED
@@ -277,7 +277,7 @@ module Algolia
277
277
  #
278
278
  def delete_objects(objs)
279
279
  check_array objs
280
- batch build_batch('deleteObject', objs.map { |objectID| { objectID: objectID } }, false)
280
+ batch build_batch('deleteObject', objs.map { |objectID| { :objectID => objectID } }, false)
281
281
  end
282
282
 
283
283
  #
@@ -38,6 +38,10 @@ module Algolia
38
38
  "/#{VERSION}/indexes"
39
39
  end
40
40
 
41
+ def Protocol.multiple_queries_uri
42
+ "/#{VERSION}/indexes/*/queries"
43
+ end
44
+
41
45
  # Construct a uri referencing a given Algolia index
42
46
  def Protocol.index_uri(index)
43
47
  "/#{VERSION}/indexes/#{CGI.escape(index)}"
@@ -82,8 +86,8 @@ module Algolia
82
86
  "#{index_uri(index)}/clear"
83
87
  end
84
88
 
85
- def Protocol.logs(offset, length)
86
- "/#{VERSION}/logs?offset=#{offset}&length=#{length}"
89
+ def Protocol.logs(offset, length, only_errors = false)
90
+ "/#{VERSION}/logs?offset=#{offset}&length=#{length}&onlyErrors=#{only_errors}"
87
91
  end
88
92
 
89
93
  def Protocol.keys_uri
@@ -102,7 +106,6 @@ module Algolia
102
106
  "#{index_uri(index)}/keys"
103
107
  end
104
108
 
105
- private
106
109
  def Protocol.to_query(params)
107
110
  params.map do |k, v|
108
111
  "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"
@@ -1,3 +1,3 @@
1
1
  module Algolia
2
- VERSION = "1.2.5"
2
+ VERSION = "1.2.7"
3
3
  end
data/spec/client_spec.rb CHANGED
@@ -8,7 +8,7 @@ def safe_index_name(name)
8
8
  "#{name}_travis-#{id}"
9
9
  end
10
10
 
11
- def is_present(array, attr, value)
11
+ def is_include(array, attr, value)
12
12
  array.each do |elt|
13
13
  if elt[attr] == value
14
14
  return true
@@ -81,11 +81,11 @@ describe 'Client' do
81
81
  expect { @index.add_objects!([ [ {:name => "test"} ] ]) }.to raise_error(ArgumentError)
82
82
  expect { @index.save_object(1) }.to raise_error(ArgumentError)
83
83
  expect { @index.save_object("test") }.to raise_error(ArgumentError)
84
- expect { @index.save_object({ objectID: 42 }.to_json) }.to raise_error(ArgumentError)
84
+ expect { @index.save_object({ :objectID => 42 }.to_json) }.to raise_error(ArgumentError)
85
85
  expect { @index.save_objects([{}, ""]) }.to raise_error(ArgumentError)
86
86
  expect { @index.save_objects([1]) }.to raise_error(ArgumentError)
87
87
  expect { @index.save_objects!([1]) }.to raise_error(ArgumentError)
88
- expect { @index.save_object({ foo: 42 }) }.to raise_error(ArgumentError) # missing objectID
88
+ expect { @index.save_object({ :foo => 42 }) }.to raise_error(ArgumentError) # missing objectID
89
89
  end
90
90
 
91
91
  it "should be thread safe" do
@@ -130,10 +130,10 @@ describe 'Client' do
130
130
  # friends_2 does not exist
131
131
  end
132
132
  res = Algolia.list_indexes
133
- is_present(res['items'], 'name', safe_index_name('àlgol?a')).should eq(false)
133
+ is_include(res['items'], 'name', safe_index_name('àlgol?a')).should eq(false)
134
134
  index.add_object!({ :name => "Robert" })
135
135
  resAfter = Algolia.list_indexes;
136
- is_present(resAfter['items'], 'name', safe_index_name('àlgol?a')).should eq(true)
136
+ is_include(resAfter['items'], 'name', safe_index_name('àlgol?a')).should eq(true)
137
137
  end
138
138
 
139
139
  it "should get a object" do
@@ -214,14 +214,20 @@ describe 'Client' do
214
214
  end
215
215
 
216
216
  it "should get logs" do
217
- host = Algolia.client.send(:thread_local_hosts).first
218
- puts host[:session].get(host[:base_url] + Algolia::Protocol.logs(0, 10), { :header => Algolia.client.headers }).content
219
-
220
217
  res = Algolia.get_logs
221
218
 
222
219
  res['logs'].size.should > 0
223
220
  end
224
221
 
222
+ it "should search on multipleIndex" do
223
+ @index.add_object!({ :name => "John Doe", :email => "john@doe.org" }, "1")
224
+ res = Algolia.multiple_queries([{:index_name => safe_index_name("àlgol?a"), "query" => ""}])
225
+ res["results"][0]["hits"].length.should eq(1)
226
+
227
+ res = Algolia.multiple_queries([{"indexName" => safe_index_name("àlgol?a"), "query" => ""}], "indexName")
228
+ res["results"][0]["hits"].length.should eq(1)
229
+ end
230
+
225
231
  it "shoud accept custom batch" do
226
232
  @index.clear_index! rescue "Not fatal"
227
233
  request = { "requests" => [
@@ -259,31 +265,31 @@ describe 'Client' do
259
265
  @index.add_object!({ :name => "P4", :_tags => "t3" })
260
266
  @index.add_object!({ :name => "P5", :_tags => ["t3", "t4"] })
261
267
 
262
- @index.search("", { tagFilters: ["t1"] })['hits'].length.should eq(2) # t1
263
- @index.search("", { tagFilters: ["t1", "t2"] })['hits'].length.should eq(0) # t1 AND t2
264
- @index.search("", { tagFilters: ["t3", "t4"] })['hits'].length.should eq(1) # t3 AND t4
265
- @index.search("", { tagFilters: [["t1", "t2"]] })['hits'].length.should eq(3) # t1 OR t2
268
+ @index.search("", { :tagFilters => ["t1"] })['hits'].length.should eq(2) # t1
269
+ @index.search("", { :tagFilters => ["t1", "t2"] })['hits'].length.should eq(0) # t1 AND t2
270
+ @index.search("", { :tagFilters => ["t3", "t4"] })['hits'].length.should eq(1) # t3 AND t4
271
+ @index.search("", { :tagFilters => [["t1", "t2"]] })['hits'].length.should eq(3) # t1 OR t2
266
272
  end
267
273
 
268
274
  it "should be facetable" do
269
275
  @index.clear!
270
- @index.set_settings( { attributesForFacetting: ["f", "g"] })
276
+ @index.set_settings( { :attributesForFacetting => ["f", "g"] })
271
277
  @index.add_object!({ :name => "P1", :f => "f1", :g => "g1" })
272
278
  @index.add_object!({ :name => "P2", :f => "f1", :g => "g2" })
273
279
  @index.add_object!({ :name => "P3", :f => "f2", :g => "g2" })
274
280
  @index.add_object!({ :name => "P4", :f => "f3", :g => "g2" })
275
281
 
276
- res = @index.search("", { facets: "f" })
282
+ res = @index.search("", { :facets => "f" })
277
283
  res['facets']['f']['f1'].should eq(2)
278
284
  res['facets']['f']['f2'].should eq(1)
279
285
  res['facets']['f']['f3'].should eq(1)
280
286
 
281
- res = @index.search("", { facets: "f", facetFilters: ["f:f1"] })
287
+ res = @index.search("", { :facets => "f", :facetFilters => ["f:f1"] })
282
288
  res['facets']['f']['f1'].should eq(2)
283
289
  res['facets']['f']['f2'].should be_nil
284
290
  res['facets']['f']['f3'].should be_nil
285
291
 
286
- res = @index.search("", { facets: "f", facetFilters: ["f:f1", "g:g2"] })
292
+ res = @index.search("", { :facets => "f", :facetFilters => ["f:f1", "g:g2"] })
287
293
  res['facets']['f']['f1'].should eq(1)
288
294
  res['facets']['f']['f2'].should be_nil
289
295
  res['facets']['f']['f3'].should be_nil
@@ -294,26 +300,28 @@ describe 'Client' do
294
300
  newIndexKey = @index.add_user_key(['search'])
295
301
  newIndexKey['key'].should_not eq("")
296
302
  resIndexAfter = @index.list_user_keys
297
- resIndex['keys'].size.should eq(resIndexAfter['keys'].size - 1)
303
+ is_include(resIndex['keys'], 'value', newIndexKey['key']).should eq(false)
304
+ is_include(resIndexAfter['keys'], 'value', newIndexKey['key']).should eq(true)
298
305
  indexKey = @index.get_user_key(newIndexKey['key'])
299
306
  indexKey['acl'][0].should eq('search')
300
307
  @index.delete_user_key(newIndexKey['key'])
301
308
  sleep 1 # Dirty but temporary
302
309
  resIndexEnd = @index.list_user_keys
303
- resIndex['keys'].size.should eq(resIndexEnd['keys'].size)
310
+ is_include(resIndexEnd['keys'], 'value', newIndexKey['key']).should eq(false)
304
311
 
305
312
 
306
313
  res = Algolia.list_user_keys
307
314
  newKey = Algolia.add_user_key(['search'])
308
315
  newKey['key'].should_not eq("")
309
316
  resAfter = Algolia.list_user_keys
310
- res['keys'].size.should eq(resAfter['keys'].size - 1)
317
+ is_include(res['keys'], 'value', newKey['key']).should eq(false)
318
+ is_include(resAfter['keys'], 'value', newKey['key']).should eq(true)
311
319
  key = Algolia.get_user_key(newKey['key'])
312
320
  key['acl'][0].should eq('search')
313
321
  Algolia.delete_user_key(newKey['key'])
314
322
  sleep 1 # Dirty but temporary
315
323
  resEnd = Algolia.list_user_keys
316
- res['keys'].size.should eq(resEnd['keys'].size)
324
+ is_include(resEnd['keys'], 'value', newKey['key']).should eq(false)
317
325
 
318
326
 
319
327
  end
@@ -567,12 +575,34 @@ describe 'Client' do
567
575
 
568
576
  it 'should generate secured api keys' do
569
577
  key = Algolia.generate_secured_api_key('my_api_key', '(public,user1)')
570
- key.should eq(Digest::SHA256.hexdigest 'my_api_key(public,user1)')
578
+ key.should eq(OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new('sha256'), 'my_api_key', '(public,user1)'))
571
579
  key = Algolia.generate_secured_api_key('my_api_key', '(public,user1)', 42)
572
- key.should eq(Digest::SHA256.hexdigest 'my_api_key(public,user1)42')
580
+ key.should eq(OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new('sha256'), 'my_api_key', '(public,user1)42'))
573
581
  key = Algolia.generate_secured_api_key('my_api_key', ['public'])
574
- key.should eq(Digest::SHA256.hexdigest 'my_api_keypublic')
582
+ key.should eq(OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new('sha256'), 'my_api_key', 'public'))
575
583
  key = Algolia.generate_secured_api_key('my_api_key', ['public', ['premium','vip']])
576
- key.should eq(Digest::SHA256.hexdigest 'my_api_keypublic,(premium,vip)')
584
+ key.should eq(OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new('sha256'), 'my_api_key', 'public,(premium,vip)'))
585
+ end
586
+
587
+ it 'Check attributes multipleQueries' do
588
+ res = Algolia.multiple_queries([{:index_name => safe_index_name("àlgol?a"), "query" => ""}])
589
+ res.should have_key('results')
590
+ res['results'].should be_a(Array)
591
+ res['results'][0].should have_key('hits')
592
+ res['results'][0]['hits'].should be_a(Array)
593
+ res['results'][0].should have_key('page')
594
+ res['results'][0]['page'].should be_a(Integer)
595
+ res['results'][0].should have_key('nbHits')
596
+ res['results'][0]['nbHits'].should be_a(Integer)
597
+ res['results'][0].should have_key('nbPages')
598
+ res['results'][0]['nbPages'].should be_a(Integer)
599
+ res['results'][0].should have_key('hitsPerPage')
600
+ res['results'][0]['hitsPerPage'].should be_a(Integer)
601
+ res['results'][0].should have_key('processingTimeMS')
602
+ res['results'][0]['processingTimeMS'].should be_a(Integer)
603
+ res['results'][0].should have_key('query')
604
+ res['results'][0]['query'].should be_a(String)
605
+ res['results'][0].should have_key('params')
606
+ res['results'][0]['params'].should be_a(String)
577
607
  end
578
608
  end
data/spec/spec_helper.rb CHANGED
@@ -4,7 +4,7 @@ if ENV['COVERAGE']
4
4
  SimpleCov.start
5
5
  end
6
6
 
7
- if ENV['TRAVIS'] && RUBY_ENGINE == "ruby"
7
+ if ENV['TRAVIS'] && Object.const_defined?(:RUBY_ENGINE) && RUBY_ENGINE == "ruby"
8
8
  require 'coveralls'
9
9
  Coveralls.wear!
10
10
  end
metadata CHANGED
@@ -1,94 +1,74 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: algoliasearch
3
- version: !ruby/object:Gem::Version
4
- version: 1.2.5
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.7
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Algolia
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-24 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
11
+
12
+ date: 2014-03-24 00:00:00 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
14
15
  name: httpclient
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '2.3'
20
- requirement: !ruby/object:Gem::Requirement
21
- requirements:
22
- - - ~>
23
- - !ruby/object:Gem::Version
24
- version: '2.3'
25
16
  prerelease: false
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: "2.3"
26
22
  type: :runtime
27
- - !ruby/object:Gem::Dependency
23
+ version_requirements: *id001
24
+ - !ruby/object:Gem::Dependency
28
25
  name: json
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: 1.5.1
34
- requirement: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - '>='
37
- - !ruby/object:Gem::Version
38
- version: 1.5.1
39
26
  prerelease: false
27
+ requirement: &id002 !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 1.5.1
40
32
  type: :runtime
41
- - !ruby/object:Gem::Dependency
33
+ version_requirements: *id002
34
+ - !ruby/object:Gem::Dependency
42
35
  name: travis
43
- version_requirements: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- requirement: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - '>='
51
- - !ruby/object:Gem::Version
52
- version: '0'
53
36
  prerelease: false
37
+ requirement: &id003 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - &id004
40
+ - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: "0"
54
43
  type: :development
55
- - !ruby/object:Gem::Dependency
44
+ version_requirements: *id003
45
+ - !ruby/object:Gem::Dependency
56
46
  name: rake
57
- version_requirements: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- requirement: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - '>='
65
- - !ruby/object:Gem::Version
66
- version: '0'
67
47
  prerelease: false
48
+ requirement: &id005 !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - *id004
68
51
  type: :development
69
- - !ruby/object:Gem::Dependency
52
+ version_requirements: *id005
53
+ - !ruby/object:Gem::Dependency
70
54
  name: rdoc
71
- version_requirements: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- requirement: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - '>='
79
- - !ruby/object:Gem::Version
80
- version: '0'
81
55
  prerelease: false
56
+ requirement: &id006 !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - *id004
82
59
  type: :development
60
+ version_requirements: *id006
83
61
  description: A simple Ruby client for the algolia.com REST API
84
62
  email: contact@algolia.com
85
63
  executables: []
64
+
86
65
  extensions: []
87
- extra_rdoc_files:
66
+
67
+ extra_rdoc_files:
88
68
  - ChangeLog
89
69
  - LICENSE.txt
90
70
  - README.md
91
- files:
71
+ files:
92
72
  - .rspec
93
73
  - .travis.yml
94
74
  - ChangeLog
@@ -112,27 +92,27 @@ files:
112
92
  - spec/spec_helper.rb
113
93
  - spec/stub_spec.rb
114
94
  homepage: http://github.com/algolia/algoliasearch-client-ruby
115
- licenses:
95
+ licenses:
116
96
  - MIT
117
97
  metadata: {}
118
- post_install_message:
98
+
99
+ post_install_message:
119
100
  rdoc_options: []
120
- require_paths:
101
+
102
+ require_paths:
121
103
  - lib
122
- required_ruby_version: !ruby/object:Gem::Requirement
123
- requirements:
124
- - - '>='
125
- - !ruby/object:Gem::Version
126
- version: '0'
127
- required_rubygems_version: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - *id004
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - *id004
132
110
  requirements: []
133
- rubyforge_project:
134
- rubygems_version: 2.2.1
135
- signing_key:
111
+
112
+ rubyforge_project:
113
+ rubygems_version: 2.0.14
114
+ signing_key:
136
115
  specification_version: 4
137
116
  summary: A simple Ruby client for the algolia.com REST API
138
117
  test_files: []
118
+