openfoodfacts 0.3.1 → 0.6.0

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.
Files changed (53) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +13 -6
  3. data/lib/openfoodfacts.rb +8 -1
  4. data/lib/openfoodfacts/additive.rb +6 -6
  5. data/lib/openfoodfacts/allergen.rb +3 -3
  6. data/lib/openfoodfacts/brand.rb +2 -2
  7. data/lib/openfoodfacts/category.rb +3 -3
  8. data/lib/openfoodfacts/city.rb +3 -3
  9. data/lib/openfoodfacts/contributor.rb +3 -3
  10. data/lib/openfoodfacts/country.rb +3 -3
  11. data/lib/openfoodfacts/entry_date.rb +33 -0
  12. data/lib/openfoodfacts/faq.rb +5 -5
  13. data/lib/openfoodfacts/ingredient_that_may_be_from_palm_oil.rb +3 -3
  14. data/lib/openfoodfacts/label.rb +5 -10
  15. data/lib/openfoodfacts/language.rb +33 -0
  16. data/lib/openfoodfacts/last_edit_date.rb +33 -0
  17. data/lib/openfoodfacts/locale.rb +22 -8
  18. data/lib/openfoodfacts/manufacturing_place.rb +3 -3
  19. data/lib/openfoodfacts/mission.rb +72 -0
  20. data/lib/openfoodfacts/number_of_ingredients.rb +33 -0
  21. data/lib/openfoodfacts/nutrition_grade.rb +33 -0
  22. data/lib/openfoodfacts/origin.rb +3 -3
  23. data/lib/openfoodfacts/packager_code.rb +3 -3
  24. data/lib/openfoodfacts/packaging.rb +3 -3
  25. data/lib/openfoodfacts/press.rb +16 -26
  26. data/lib/openfoodfacts/product.rb +26 -30
  27. data/lib/openfoodfacts/product_state.rb +3 -3
  28. data/lib/openfoodfacts/purchase_place.rb +3 -3
  29. data/lib/openfoodfacts/store.rb +3 -3
  30. data/lib/openfoodfacts/trace.rb +3 -3
  31. data/lib/openfoodfacts/user.rb +5 -5
  32. data/lib/openfoodfacts/version.rb +1 -1
  33. data/test/minitest_helper.rb +7 -1
  34. data/test/test_openfoodfacts.rb +151 -25
  35. metadata +36 -57
  36. data/test/fixtures/additives.yml +0 -1963
  37. data/test/fixtures/additives_locale.yml +0 -1963
  38. data/test/fixtures/brands.yml +0 -31542
  39. data/test/fixtures/brands_locale.yml +0 -17498
  40. data/test/fixtures/faq.yml +0 -1078
  41. data/test/fixtures/fetch_product_3029330003533.yml +0 -280
  42. data/test/fixtures/index.yml +0 -510
  43. data/test/fixtures/labels.yml +0 -9091
  44. data/test/fixtures/login_user.yml +0 -38
  45. data/test/fixtures/press.yml +0 -1284
  46. data/test/fixtures/product_3029330003533.yml +0 -280
  47. data/test/fixtures/product_states.yml +0 -910
  48. data/test/fixtures/product_states_locale.yml +0 -1002
  49. data/test/fixtures/products_for_brand.yml +0 -5481
  50. data/test/fixtures/products_for_state.yml +0 -2178
  51. data/test/fixtures/products_with_additive.yml +0 -3130
  52. data/test/fixtures/search_Chocolat.yml +0 -586
  53. data/test/fixtures/search_Chocolat_1_000_000.yml +0 -200
@@ -15,9 +15,9 @@ module Openfoodfacts
15
15
 
16
16
  # Get stores
17
17
  #
18
- def all(locale: Openfoodfacts::DEFAULT_LOCALE)
18
+ def all(locale: DEFAULT_LOCALE, domain: DEFAULT_DOMAIN)
19
19
  if path = LOCALE_PATHS[locale]
20
- Product.tags_from_page(self, "http://#{locale}.openfoodfacts.org/#{path}")
20
+ Product.tags_from_page(self, "https://#{locale}.#{domain}/#{path}")
21
21
  end
22
22
  end
23
23
 
@@ -30,4 +30,4 @@ module Openfoodfacts
30
30
  end
31
31
 
32
32
  end
33
- end
33
+ end
@@ -15,9 +15,9 @@ module Openfoodfacts
15
15
 
16
16
  # Get traces
17
17
  #
18
- def all(locale: Openfoodfacts::DEFAULT_LOCALE)
18
+ def all(locale: DEFAULT_LOCALE, domain: DEFAULT_DOMAIN)
19
19
  if path = LOCALE_PATHS[locale]
20
- Product.tags_from_page(self, "http://#{locale}.openfoodfacts.org/#{path}")
20
+ Product.tags_from_page(self, "https://#{locale}.#{domain}/#{path}")
21
21
  end
22
22
  end
23
23
 
@@ -30,4 +30,4 @@ module Openfoodfacts
30
30
  end
31
31
 
32
32
  end
33
- end
33
+ end
@@ -6,10 +6,10 @@ module Openfoodfacts
6
6
  class << self
7
7
 
8
8
  # Login
9
- # WARNING SECURITY: It is not made throught HTTPS Secure so password can be read on the way.
10
9
  #
11
- def login(user_id, password, locale: Openfoodfacts::DEFAULT_LOCALE)
12
- uri = URI("http://#{locale}.openfoodfacts.org/cgi/session.pl")
10
+ def login(user_id, password, locale: DEFAULT_LOCALE, domain: DEFAULT_DOMAIN)
11
+ path = 'cgi/session.pl'
12
+ uri = URI("https://#{locale}.#{domain}/#{path}")
13
13
  params = {
14
14
  "jqm" => "1",
15
15
  "user_id" => user_id,
@@ -29,7 +29,7 @@ module Openfoodfacts
29
29
 
30
30
  # Login
31
31
  #
32
- def login(locale: Openfoodfacts::DEFAULT_LOCALE)
32
+ def login(locale: DEFAULT_LOCALE)
33
33
  if user = self.class.login(self.user_id, self.password, locale: locale)
34
34
  self.name = user.name
35
35
  self
@@ -37,4 +37,4 @@ module Openfoodfacts
37
37
  end
38
38
 
39
39
  end
40
- end
40
+ end
@@ -1,3 +1,3 @@
1
1
  module Openfoodfacts
2
- VERSION = "0.3.1"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -6,7 +6,13 @@ require 'minitest/autorun'
6
6
  require 'webmock/minitest'
7
7
  require 'vcr'
8
8
 
9
+ # Avoid OpenSSL certificate verify failed error
10
+ if ENV.has_key?('APPVEYOR') && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.4')
11
+ require 'openssl'
12
+ OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
13
+ end
14
+
9
15
  VCR.configure do |c|
10
16
  c.cassette_library_dir = "test/fixtures"
11
17
  c.hook_into :webmock
12
- end
18
+ end
@@ -13,9 +13,7 @@ class TestOpenfoodfacts < Minitest::Test
13
13
  def test_it_fetches_locales
14
14
  VCR.use_cassette("index") do
15
15
  locales = ::Openfoodfacts::Locale.all
16
- assert_includes locales, "world"
17
- assert_includes locales, "fr"
18
- assert_includes locales, "be-fr"
16
+ assert_includes locales.map { |locale| locale['code'] }, "gd"
19
17
  end
20
18
  end
21
19
 
@@ -37,7 +35,7 @@ class TestOpenfoodfacts < Minitest::Test
37
35
 
38
36
  def test_it_returns_product_weburl
39
37
  product = ::Openfoodfacts::Product.new(code: "3029330003533")
40
- assert_equal "http://world.openfoodfacts.org/product/#{product.code}", product.weburl(locale: 'world')
38
+ assert_equal "https://world.openfoodfacts.org/product/#{product.code}", product.weburl(locale: 'world')
41
39
  end
42
40
 
43
41
  def test_it_fetches_product
@@ -52,22 +50,22 @@ class TestOpenfoodfacts < Minitest::Test
52
50
 
53
51
  def test_it_get_product
54
52
  product_code = "3029330003533"
55
-
53
+
56
54
  VCR.use_cassette("product_#{product_code}", record: :once, match_requests_on: [:host, :path]) do
57
55
  assert_equal ::Openfoodfacts::Product.get(product_code).code, product_code
58
56
  end
59
57
  end
60
58
 
61
59
  def test_that_it_search
62
- term = "Chocolat"
60
+ term = "coca"
63
61
  first_product = nil
64
62
 
65
63
  VCR.use_cassette("search_#{term}") do
66
64
  products = ::Openfoodfacts::Product.search(term, page_size: 42)
67
65
  first_product = products.first
68
66
 
69
- assert_match /#{term}/i, products.last["product_name"]
70
- assert_match /#{term}/i, ::Openfoodfacts::Product.search(term).last["product_name"]
67
+ assert_match(/#{term}/i, products.last["product_name"])
68
+ assert_match(/#{term}/i, ::Openfoodfacts::Product.search(term).last["product_name"])
71
69
  assert_equal products.size, 42
72
70
  end
73
71
 
@@ -105,8 +103,8 @@ class TestOpenfoodfacts < Minitest::Test
105
103
 
106
104
  def test_it_fetches_additives
107
105
  VCR.use_cassette("additives") do
108
- additives = ::Openfoodfacts::Additive.all(locale: 'fr') # FR to have riskiness
109
- assert_equal "http://fr.openfoodfacts.org/additif/e330-acide-citrique", additives.first.url
106
+ additives = ::Openfoodfacts::Additive.all # World to have riskiness
107
+ assert_includes additives.map { |additive| additive['url'] }, "https://world.openfoodfacts.org/additive/e330-citric-acid"
110
108
  refute_nil additives.detect { |additive| !additive['riskiness'].nil? }
111
109
  end
112
110
  end
@@ -114,14 +112,14 @@ class TestOpenfoodfacts < Minitest::Test
114
112
  def test_it_fetches_additives_for_locale
115
113
  VCR.use_cassette("additives_locale") do
116
114
  additives = ::Openfoodfacts::Additive.all(locale: 'fr')
117
- assert_equal "http://fr.openfoodfacts.org/additif/e330-acide-citrique", additives.first.url
115
+ assert_includes additives.map { |additive| additive['url'] }, "https://fr.openfoodfacts.org/additif/e330-acide-citrique"
118
116
  end
119
117
  end
120
118
 
121
119
  def test_it_fetches_products_with_additive
122
- additive = ::Openfoodfacts::Additive.new("url" => "http://world.openfoodfacts.org/additive/e452i-sodium-polyphosphate")
120
+ additive = ::Openfoodfacts::Additive.new("url" => "https://world.openfoodfacts.org/additive/e452i-sodium-polyphosphate")
123
121
  VCR.use_cassette("products_with_additive") do
124
- products_with_additive = additive.products(page: -1)
122
+ products_with_additive = additive.products(page: 1)
125
123
  refute_empty products_with_additive
126
124
  end
127
125
  end
@@ -143,20 +141,58 @@ class TestOpenfoodfacts < Minitest::Test
143
141
  end
144
142
 
145
143
  def test_it_fetches_products_for_brand
146
- brand = ::Openfoodfacts::Brand.new("url" => "http://world.openfoodfacts.org/brand/bel")
144
+ brand = ::Openfoodfacts::Brand.new("url" => "https://world.openfoodfacts.org/brand/bel")
147
145
  VCR.use_cassette("products_for_brand") do
148
- products_for_brand = brand.products(page: -1)
146
+ products_for_brand = brand.products(page: 1)
149
147
  refute_empty products_for_brand
150
148
  end
151
149
  end
152
150
 
153
- # Labels
151
+ # Nutrition Grades
152
+
153
+ def test_it_fetches_nutrition_grades
154
+ VCR.use_cassette("nutrition_grades") do
155
+ nutrition_grades = ::Openfoodfacts::NutritionGrade.all
156
+ assert_includes nutrition_grades.map { |nutrition_grade| nutrition_grade['name'] }, "Unknown"
157
+ end
158
+ end
159
+
160
+ def test_it_fetches_nutrition_grades_for_locale
161
+ VCR.use_cassette("nutrition_grades_locale") do
162
+ nutrition_grades = ::Openfoodfacts::NutritionGrade.all(locale: 'fr')
163
+ assert_includes nutrition_grades.map { |nutrition_grade| nutrition_grade['name'] }, "Inconnu"
164
+ end
165
+ end
166
+
167
+ def test_it_fetches_products_for_nutrition_grade
168
+ nutrition_grade = ::Openfoodfacts::NutritionGrade.new("url" => "https://world.openfoodfacts.org/nutrition-grade/c")
169
+ VCR.use_cassette("products_for_nutrition_grade") do
170
+ products_for_nutrition_grade = nutrition_grade.products(page: 1)
171
+ refute_empty products_for_nutrition_grade
172
+ end
173
+ end
174
+
175
+ # Languages
176
+
177
+ def test_it_fetches_languages
178
+ VCR.use_cassette("languages") do
179
+ languages = ::Openfoodfacts::Language.all
180
+ assert_includes languages.map { |language| language['name'] }, "French"
181
+ end
182
+ end
154
183
 
155
- def test_it_fetches_labels
156
- VCR.use_cassette("labels") do
157
- labels = ::Openfoodfacts::Label.all(locale: 'fr')
158
- bio_label = labels.detect { |label| label.name == "Bio" }
159
- assert_equal "http://fr.openfoodfacts.org/label/bio", bio_label.url
184
+ def test_it_fetches_languages_for_locale
185
+ VCR.use_cassette("languages_locale") do
186
+ languages = ::Openfoodfacts::Language.all(locale: 'fr')
187
+ assert_includes languages.map { |language| language['name'] }, "Anglais"
188
+ end
189
+ end
190
+
191
+ def test_it_fetches_products_for_language
192
+ language = ::Openfoodfacts::Language.new("url" => "https://world.openfoodfacts.org/language/french")
193
+ VCR.use_cassette("products_for_language") do
194
+ products_for_language = language.products(page: 1)
195
+ refute_empty products_for_language
160
196
  end
161
197
  end
162
198
 
@@ -165,25 +201,97 @@ class TestOpenfoodfacts < Minitest::Test
165
201
  def test_it_fetches_product_states
166
202
  VCR.use_cassette("product_states") do
167
203
  product_states = ::Openfoodfacts::ProductState.all
168
- assert_equal "http://world.openfoodfacts.org/state/empty", product_states.last.url
204
+ assert_equal "https://world.openfoodfacts.org/state/front-photo-not-selected", product_states.last.url
169
205
  end
170
206
  end
171
207
 
172
208
  def test_it_fetches_product_states_for_locale
173
209
  VCR.use_cassette("product_states_locale") do
174
210
  product_states = ::Openfoodfacts::ProductState.all(locale: 'fr')
175
- assert_equal "http://fr.openfoodfacts.org/etat/vide", product_states.last.url
211
+ assert_equal "https://fr.openfoodfacts.org/etat/en:front-photo-not-selected", product_states.last.url
176
212
  end
177
213
  end
178
214
 
179
215
  def test_it_fetches_products_for_state
180
- product_state = ::Openfoodfacts::ProductState.new("url" => "http://world.openfoodfacts.org/state/photos-uploaded", "products_count" => 22)
216
+ product_state = ::Openfoodfacts::ProductState.new("url" => "https://world.openfoodfacts.org/state/photos-uploaded", "products_count" => 22)
181
217
  VCR.use_cassette("products_for_state") do
182
- products_for_state = product_state.products(page: -1)
218
+ products_for_state = product_state.products(page: 1)
183
219
  refute_empty products_for_state
184
220
  end
185
221
  end
186
222
 
223
+ # Entry date
224
+
225
+ def test_it_fetches_entry_dates
226
+ VCR.use_cassette("entry_dates") do
227
+ entry_dates = ::Openfoodfacts::EntryDate.all
228
+ assert_includes entry_dates.map { |entry_date| entry_date['name'] }, "2017-03-09"
229
+ end
230
+ end
231
+
232
+ def test_it_fetches_entry_dates_for_locale
233
+ VCR.use_cassette("entry_dates_locale") do
234
+ entry_dates = ::Openfoodfacts::EntryDate.all(locale: 'fr')
235
+ assert_includes entry_dates.map { |entry_date| entry_date['name'] }, "2017-03-09"
236
+ end
237
+ end
238
+
239
+ def test_it_fetches_products_for_entry_date
240
+ entry_date = ::Openfoodfacts::EntryDate.new("url" => "https://world.openfoodfacts.org/entry-date/2014-04-17")
241
+ VCR.use_cassette("products_for_entry_date") do
242
+ products_for_entry_date = entry_date.products(page: 1)
243
+ refute_empty products_for_entry_date
244
+ end
245
+ end
246
+
247
+ # Last edit date
248
+
249
+ def test_it_fetches_last_edit_dates
250
+ VCR.use_cassette("last_edit_dates") do
251
+ last_edit_dates = ::Openfoodfacts::LastEditDate.all
252
+ assert_includes last_edit_dates.map { |last_edit_date| last_edit_date['name'] }, "2017-03-23"
253
+ end
254
+ end
255
+
256
+ def test_it_fetches_last_edit_dates_for_locale
257
+ VCR.use_cassette("last_edit_dates_locale") do
258
+ last_edit_dates = ::Openfoodfacts::LastEditDate.all(locale: 'fr')
259
+ assert_includes last_edit_dates.map { |last_edit_date| last_edit_date['name'] }, "2017-03-23"
260
+ end
261
+ end
262
+
263
+ def test_it_fetches_products_for_last_edit_date
264
+ last_edit_date = ::Openfoodfacts::LastEditDate.new("url" => "https://world.openfoodfacts.org/last-edit-date/2020-04")
265
+ VCR.use_cassette("products_for_last_edit_date") do
266
+ products_for_last_edit_date = last_edit_date.products(page: 1)
267
+ refute_empty products_for_last_edit_date
268
+ end
269
+ end
270
+
271
+ # Number of Ingredients
272
+
273
+ def test_it_fetches_numbers_of_ingredients
274
+ VCR.use_cassette("numbers_of_ingredients") do
275
+ numbers_of_ingredients = ::Openfoodfacts::NumberOfIngredients.all
276
+ assert_includes numbers_of_ingredients.map { |number_of_ingredients| number_of_ingredients['name'] }, "38"
277
+ end
278
+ end
279
+
280
+ def test_it_fetches_numbers_of_ingredients_for_locale
281
+ VCR.use_cassette("number_of_ingredients_locale") do
282
+ numbers_of_ingredients = ::Openfoodfacts::NumberOfIngredients.all(locale: 'fr')
283
+ assert_includes numbers_of_ingredients.map { |number_of_ingredients| number_of_ingredients['name'] }, "38"
284
+ end
285
+ end
286
+
287
+ def test_it_fetches_products_for_number_of_ingredients
288
+ number_of_ingredients = ::Openfoodfacts::NumberOfIngredients.new("url" => "https://world.openfoodfacts.org/number-of-ingredients/38")
289
+ VCR.use_cassette("products_for_number_of_ingredients") do
290
+ products_for_number_of_ingredients = number_of_ingredients.products(page: 1)
291
+ refute_empty products_for_number_of_ingredients
292
+ end
293
+ end
294
+
187
295
  # FAQ
188
296
 
189
297
  def test_it_fetches_faq
@@ -192,6 +300,24 @@ class TestOpenfoodfacts < Minitest::Test
192
300
  end
193
301
  end
194
302
 
303
+ # Mission
304
+
305
+ def test_it_fetches_missions
306
+ VCR.use_cassette("missions") do
307
+ skip("Website have a bug with Missions page on https://fr.openfoodfacts.org/missions")
308
+ refute_empty ::Openfoodfacts::Mission.all(locale: 'fr')
309
+ end
310
+ end
311
+
312
+ def test_it_fetches_mission
313
+ VCR.use_cassette("mission", record: :once, match_requests_on: [:host, :path]) do
314
+ skip("Website have a bug with Mission page on https://fr.openfoodfacts.org/mission/informateur-100-produits")
315
+ mission = ::Openfoodfacts::Mission.new(url: "https://fr.openfoodfacts.org/mission/informateur-100-produits")
316
+ mission.fetch
317
+ refute_empty mission.users
318
+ end
319
+ end
320
+
195
321
  # Press
196
322
 
197
323
  def test_it_fetches_press
metadata CHANGED
@@ -1,130 +1,122 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openfoodfacts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Leger
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-09 00:00:00.000000000 Z
11
+ date: 2020-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: her
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.8'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '0.8'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: hashie
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - "~>"
17
+ - - ">="
32
18
  - !ruby/object:Gem::Version
33
19
  version: '3.4'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5.0'
34
23
  type: :runtime
35
24
  prerelease: false
36
25
  version_requirements: !ruby/object:Gem::Requirement
37
26
  requirements:
38
- - - "~>"
27
+ - - ">="
39
28
  - !ruby/object:Gem::Version
40
29
  version: '3.4'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
41
33
  - !ruby/object:Gem::Dependency
42
34
  name: nokogiri
43
35
  requirement: !ruby/object:Gem::Requirement
44
36
  requirements:
45
37
  - - "~>"
46
38
  - !ruby/object:Gem::Version
47
- version: '1.6'
39
+ version: '1.7'
48
40
  type: :runtime
49
41
  prerelease: false
50
42
  version_requirements: !ruby/object:Gem::Requirement
51
43
  requirements:
52
44
  - - "~>"
53
45
  - !ruby/object:Gem::Version
54
- version: '1.6'
46
+ version: '1.7'
55
47
  - !ruby/object:Gem::Dependency
56
48
  name: bundler
57
49
  requirement: !ruby/object:Gem::Requirement
58
50
  requirements:
59
51
  - - "~>"
60
52
  - !ruby/object:Gem::Version
61
- version: '1.8'
53
+ version: '2.1'
62
54
  type: :development
63
55
  prerelease: false
64
56
  version_requirements: !ruby/object:Gem::Requirement
65
57
  requirements:
66
58
  - - "~>"
67
59
  - !ruby/object:Gem::Version
68
- version: '1.8'
60
+ version: '2.1'
69
61
  - !ruby/object:Gem::Dependency
70
62
  name: rake
71
63
  requirement: !ruby/object:Gem::Requirement
72
64
  requirements:
73
65
  - - "~>"
74
66
  - !ruby/object:Gem::Version
75
- version: '10.4'
67
+ version: '12.0'
76
68
  type: :development
77
69
  prerelease: false
78
70
  version_requirements: !ruby/object:Gem::Requirement
79
71
  requirements:
80
72
  - - "~>"
81
73
  - !ruby/object:Gem::Version
82
- version: '10.4'
74
+ version: '12.0'
83
75
  - !ruby/object:Gem::Dependency
84
76
  name: minitest
85
77
  requirement: !ruby/object:Gem::Requirement
86
78
  requirements:
87
79
  - - "~>"
88
80
  - !ruby/object:Gem::Version
89
- version: '5.8'
81
+ version: '5.10'
90
82
  type: :development
91
83
  prerelease: false
92
84
  version_requirements: !ruby/object:Gem::Requirement
93
85
  requirements:
94
86
  - - "~>"
95
87
  - !ruby/object:Gem::Version
96
- version: '5.8'
88
+ version: '5.10'
97
89
  - !ruby/object:Gem::Dependency
98
90
  name: vcr
99
91
  requirement: !ruby/object:Gem::Requirement
100
92
  requirements:
101
93
  - - "~>"
102
94
  - !ruby/object:Gem::Version
103
- version: '3.0'
95
+ version: '5.1'
104
96
  type: :development
105
97
  prerelease: false
106
98
  version_requirements: !ruby/object:Gem::Requirement
107
99
  requirements:
108
100
  - - "~>"
109
101
  - !ruby/object:Gem::Version
110
- version: '3.0'
102
+ version: '5.1'
111
103
  - !ruby/object:Gem::Dependency
112
104
  name: webmock
113
105
  requirement: !ruby/object:Gem::Requirement
114
106
  requirements:
115
107
  - - "~>"
116
108
  - !ruby/object:Gem::Version
117
- version: '1.22'
109
+ version: '3.11'
118
110
  type: :development
119
111
  prerelease: false
120
112
  version_requirements: !ruby/object:Gem::Requirement
121
113
  requirements:
122
114
  - - "~>"
123
115
  - !ruby/object:Gem::Version
124
- version: '1.22'
125
- description: OpenFoodFacts API Wrapper, the open database about food.
116
+ version: '3.11'
117
+ description: Open Food Facts API Wrapper, the open database about food.
126
118
  email:
127
- - nicolas.leger@nleger.com
119
+ - opensource@nleger.com
128
120
  executables: []
129
121
  extensions: []
130
122
  extra_rdoc_files: []
@@ -140,11 +132,17 @@ files:
140
132
  - lib/openfoodfacts/city.rb
141
133
  - lib/openfoodfacts/contributor.rb
142
134
  - lib/openfoodfacts/country.rb
135
+ - lib/openfoodfacts/entry_date.rb
143
136
  - lib/openfoodfacts/faq.rb
144
137
  - lib/openfoodfacts/ingredient_that_may_be_from_palm_oil.rb
145
138
  - lib/openfoodfacts/label.rb
139
+ - lib/openfoodfacts/language.rb
140
+ - lib/openfoodfacts/last_edit_date.rb
146
141
  - lib/openfoodfacts/locale.rb
147
142
  - lib/openfoodfacts/manufacturing_place.rb
143
+ - lib/openfoodfacts/mission.rb
144
+ - lib/openfoodfacts/number_of_ingredients.rb
145
+ - lib/openfoodfacts/nutrition_grade.rb
148
146
  - lib/openfoodfacts/origin.rb
149
147
  - lib/openfoodfacts/packager_code.rb
150
148
  - lib/openfoodfacts/packaging.rb
@@ -156,31 +154,13 @@ files:
156
154
  - lib/openfoodfacts/trace.rb
157
155
  - lib/openfoodfacts/user.rb
158
156
  - lib/openfoodfacts/version.rb
159
- - test/fixtures/additives.yml
160
- - test/fixtures/additives_locale.yml
161
- - test/fixtures/brands.yml
162
- - test/fixtures/brands_locale.yml
163
- - test/fixtures/faq.yml
164
- - test/fixtures/fetch_product_3029330003533.yml
165
- - test/fixtures/index.yml
166
- - test/fixtures/labels.yml
167
- - test/fixtures/login_user.yml
168
- - test/fixtures/press.yml
169
- - test/fixtures/product_3029330003533.yml
170
- - test/fixtures/product_states.yml
171
- - test/fixtures/product_states_locale.yml
172
- - test/fixtures/products_for_brand.yml
173
- - test/fixtures/products_for_state.yml
174
- - test/fixtures/products_with_additive.yml
175
- - test/fixtures/search_Chocolat.yml
176
- - test/fixtures/search_Chocolat_1_000_000.yml
177
157
  - test/minitest_helper.rb
178
158
  - test/test_openfoodfacts.rb
179
159
  homepage: https://github.com/openfoodfacts/openfoodfacts-ruby
180
160
  licenses:
181
161
  - MIT
182
162
  metadata: {}
183
- post_install_message:
163
+ post_install_message:
184
164
  rdoc_options: []
185
165
  require_paths:
186
166
  - lib
@@ -188,16 +168,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
168
  requirements:
189
169
  - - ">="
190
170
  - !ruby/object:Gem::Version
191
- version: '2.0'
171
+ version: '2.5'
192
172
  required_rubygems_version: !ruby/object:Gem::Requirement
193
173
  requirements:
194
174
  - - ">="
195
175
  - !ruby/object:Gem::Version
196
176
  version: '0'
197
177
  requirements: []
198
- rubyforge_project:
199
- rubygems_version: 2.6.3
200
- signing_key:
178
+ rubygems_version: 3.2.3
179
+ signing_key:
201
180
  specification_version: 4
202
- summary: OpenFoodFacts API Wrapper
181
+ summary: Open Food Facts API Wrapper
203
182
  test_files: []