algoliasearch 1.2.5 → 1.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+