metal_archives 2.2.0 → 3.1.1

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 (71) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ci.yml +93 -0
  3. data/.gitignore +6 -6
  4. data/.overcommit.yml +35 -0
  5. data/.rspec +2 -0
  6. data/.rubocop.yml +66 -6
  7. data/CHANGELOG.md +33 -0
  8. data/Gemfile +1 -1
  9. data/LICENSE.md +17 -4
  10. data/README.md +65 -86
  11. data/Rakefile +8 -7
  12. data/bin/console +38 -0
  13. data/bin/setup +8 -0
  14. data/config/inflections.rb +7 -0
  15. data/config/initializers/.keep +0 -0
  16. data/docker-compose.yml +23 -0
  17. data/lib/metal_archives.rb +82 -27
  18. data/lib/metal_archives/cache/base.rb +40 -0
  19. data/lib/metal_archives/cache/memory.rb +68 -0
  20. data/lib/metal_archives/cache/null.rb +22 -0
  21. data/lib/metal_archives/cache/redis.rb +49 -0
  22. data/lib/metal_archives/{utils/collection.rb → collection.rb} +3 -5
  23. data/lib/metal_archives/configuration.rb +33 -50
  24. data/lib/metal_archives/{error.rb → errors.rb} +9 -1
  25. data/lib/metal_archives/http_client.rb +45 -44
  26. data/lib/metal_archives/models/artist.rb +90 -45
  27. data/lib/metal_archives/models/band.rb +77 -52
  28. data/lib/metal_archives/models/base.rb +225 -0
  29. data/lib/metal_archives/models/label.rb +14 -15
  30. data/lib/metal_archives/models/release.rb +25 -29
  31. data/lib/metal_archives/parsers/artist.rb +86 -50
  32. data/lib/metal_archives/parsers/band.rb +155 -88
  33. data/lib/metal_archives/parsers/base.rb +14 -0
  34. data/lib/metal_archives/parsers/country.rb +21 -0
  35. data/lib/metal_archives/parsers/date.rb +31 -0
  36. data/lib/metal_archives/parsers/genre.rb +67 -0
  37. data/lib/metal_archives/parsers/label.rb +39 -31
  38. data/lib/metal_archives/parsers/parser.rb +18 -63
  39. data/lib/metal_archives/parsers/release.rb +98 -89
  40. data/lib/metal_archives/parsers/year.rb +31 -0
  41. data/lib/metal_archives/version.rb +12 -1
  42. data/metal_archives.env.example +10 -0
  43. data/metal_archives.gemspec +43 -28
  44. data/nginx/default.conf +60 -0
  45. metadata +179 -74
  46. data/.travis.yml +0 -12
  47. data/lib/metal_archives/middleware/cache_check.rb +0 -20
  48. data/lib/metal_archives/middleware/encoding.rb +0 -16
  49. data/lib/metal_archives/middleware/headers.rb +0 -38
  50. data/lib/metal_archives/middleware/rewrite_endpoint.rb +0 -38
  51. data/lib/metal_archives/models/base_model.rb +0 -215
  52. data/lib/metal_archives/utils/lru_cache.rb +0 -61
  53. data/lib/metal_archives/utils/nil_date.rb +0 -99
  54. data/lib/metal_archives/utils/range.rb +0 -66
  55. data/spec/configuration_spec.rb +0 -96
  56. data/spec/factories/artist_factory.rb +0 -37
  57. data/spec/factories/band_factory.rb +0 -60
  58. data/spec/factories/nil_date_factory.rb +0 -9
  59. data/spec/factories/range_factory.rb +0 -8
  60. data/spec/models/artist_spec.rb +0 -138
  61. data/spec/models/band_spec.rb +0 -164
  62. data/spec/models/base_model_spec.rb +0 -219
  63. data/spec/models/release_spec.rb +0 -133
  64. data/spec/parser_spec.rb +0 -19
  65. data/spec/spec_helper.rb +0 -111
  66. data/spec/support/factory_girl.rb +0 -5
  67. data/spec/support/metal_archives.rb +0 -33
  68. data/spec/utils/collection_spec.rb +0 -72
  69. data/spec/utils/lru_cache_spec.rb +0 -53
  70. data/spec/utils/nil_date_spec.rb +0 -156
  71. data/spec/utils/range_spec.rb +0 -62
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MetalArchives
4
+ module Parsers
5
+ ##
6
+ # Year range parser
7
+ #
8
+ class Year < Base
9
+ ##
10
+ # Parse year range
11
+ #
12
+ # Returns +Range+ of +Integer+
13
+ #
14
+ def self.parse(input)
15
+ return if input.blank?
16
+
17
+ components = input
18
+ .split("-")
19
+ .map(&:to_i)
20
+ .map { |y| y.zero? ? nil : y }
21
+
22
+ return if components.empty?
23
+
24
+ # Set end if only one year
25
+ components << components.first if components.count == 1
26
+
27
+ components[0]..components[1]
28
+ end
29
+ end
30
+ end
31
+ end
@@ -4,5 +4,16 @@ module MetalArchives
4
4
  ##
5
5
  # MetalArchives API version
6
6
  #
7
- VERSION = '2.2.0'
7
+ module Version
8
+ MAJOR = 3
9
+ MINOR = 1
10
+ PATCH = 1
11
+ PRE = nil
12
+
13
+ VERSION = [MAJOR, MINOR, PATCH].compact.join(".")
14
+
15
+ STRING = [VERSION, PRE].compact.join("-")
16
+ end
17
+
18
+ VERSION = Version::STRING
8
19
  end
@@ -0,0 +1,10 @@
1
+ ## Environment
2
+ #METAL_ARCHIVES_ENV=development
3
+
4
+ ## Metal Archives endpoint
5
+ #MA_ENDPOINT=https://www.metal-archives.com/
6
+ #MA_ENDPOINT_USER=my_user
7
+ #MA_ENDPOINT_PASSWORD=my_password
8
+
9
+ ## WebMock
10
+ #WEBMOCK_ALLOW_HOST=metal-archives.com
@@ -1,36 +1,51 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('../lib', __FILE__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require_relative "lib/metal_archives/version"
5
4
 
6
- require 'metal_archives/version'
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "metal_archives"
7
+ spec.version = MetalArchives::VERSION
8
+ spec.authors = ["Florian Dejonckheere"]
9
+ spec.email = ["florian@floriandejonckheere.be"]
7
10
 
8
- Gem::Specification.new do |gem|
9
- gem.authors = ['Florian Dejonckheere']
10
- gem.email = ['florian@floriandejonckheere.be']
11
- gem.summary = 'Metal Archives Ruby API'
12
- gem.homepage = 'http://github.com/floriandejonckheere/metal_archives'
11
+ spec.summary = "Metal Archives Ruby API"
12
+ spec.description = "Ruby API layer that transparently queries, scrapes and caches Metal Archives' website"
13
+ spec.homepage = "https://github.com/floriandejonckheere/metal_archives"
14
+ spec.license = "MIT"
15
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.6")
13
16
 
14
- gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
15
- gem.executables = []
16
- gem.test_files = gem.files.grep(%r{^spec/})
17
- gem.name = 'metal_archives'
18
- gem.require_paths = %w[lib]
19
- gem.version = MetalArchives::VERSION
20
- gem.license = 'MIT'
17
+ spec.metadata["source_code_uri"] = "https://github.com/floriandejonckheere/metal_archives"
21
18
 
22
- gem.add_development_dependency 'byebug'
23
- gem.add_development_dependency 'rake'
24
- gem.add_development_dependency 'rdoc'
25
- gem.add_development_dependency 'rspec'
26
- gem.add_development_dependency 'factory_girl'
27
- gem.add_development_dependency 'faker'
28
- gem.add_development_dependency 'rubocop'
29
- gem.add_development_dependency 'coveralls'
30
- gem.add_development_dependency 'debase'
19
+ # Specify which files should be added to the gem when it is released.
20
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
22
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
+ end
24
+ spec.bindir = "bin"
25
+ spec.executables = spec.files.grep(%r(^bin/)) { |f| File.basename(f) }
26
+ spec.require_paths = ["lib"]
31
27
 
32
- gem.add_dependency 'faraday'
33
- gem.add_dependency 'faraday_throttler'
34
- gem.add_dependency 'nokogiri'
35
- gem.add_dependency 'countries'
28
+ spec.add_runtime_dependency "countries"
29
+ spec.add_runtime_dependency "http"
30
+ spec.add_runtime_dependency "nokogiri"
31
+ spec.add_runtime_dependency "zeitwerk"
32
+
33
+ spec.add_development_dependency "byebug"
34
+ spec.add_development_dependency "debase"
35
+ spec.add_development_dependency "factory_bot"
36
+ spec.add_development_dependency "fasterer"
37
+ spec.add_development_dependency "ffaker"
38
+ spec.add_development_dependency "flay"
39
+ spec.add_development_dependency "overcommit"
40
+ spec.add_development_dependency "pronto"
41
+ spec.add_development_dependency "rake"
42
+ spec.add_development_dependency "rdoc"
43
+ spec.add_development_dependency "redis"
44
+ spec.add_development_dependency "reek"
45
+ spec.add_development_dependency "rspec"
46
+ spec.add_development_dependency "rubocop"
47
+ spec.add_development_dependency "rubocop-performance"
48
+ spec.add_development_dependency "rubocop-rspec"
49
+ spec.add_development_dependency "timecop"
50
+ spec.add_development_dependency "webmock"
36
51
  end
@@ -0,0 +1,60 @@
1
+ proxy_cache_path /cache levels=1:2 keys_zone=metal_archives:10m max_size=10g
2
+ inactive=6M use_temp_path=off;
3
+
4
+ limit_req_zone $binary_remote_addr zone=ma_limit_req:10m rate=2r/s;
5
+
6
+ server {
7
+ listen 80;
8
+
9
+ # Don't send the NGINX version number in error pages and Server header
10
+ server_tokens off;
11
+
12
+ # Don't process logs
13
+ access_log off;
14
+
15
+ # Proxy to MA server
16
+ location / {
17
+ proxy_pass https://www.metal-archives.com;
18
+
19
+ sub_filter www.metal-archives.com localhost;
20
+ sub_filter_once off;
21
+
22
+ proxy_redirect off;
23
+ proxy_set_header Host www.metal-archives.com;
24
+ proxy_set_header X-Forwarded-Host $host;
25
+ proxy_set_header X-Forwarded-Server $host;
26
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
27
+ proxy_set_header X-Real-IP $remote_addr;
28
+
29
+ proxy_ssl_certificate /etc/nginx/conf.d/client.pem;
30
+ proxy_ssl_certificate_key /etc/nginx/conf.d/client.key;
31
+ proxy_ssl_server_name on;
32
+ proxy_ssl_session_reuse on;
33
+
34
+ proxy_ignore_headers X-Accel-Expires;
35
+ proxy_ignore_headers Expires;
36
+ proxy_ignore_headers Cache-Control;
37
+ proxy_ignore_headers Set-Cookie;
38
+
39
+ proxy_hide_header Set-Cookie;
40
+ proxy_hide_header Pragma;
41
+
42
+ # Limit HTTP requests
43
+ limit_req zone=ma_limit_req burst=5;
44
+ limit_req_status 429;
45
+ limit_conn_status 429;
46
+
47
+ # Cache responses
48
+ proxy_cache metal_archives;
49
+ proxy_cache_valid 200 301 302 30d;
50
+ proxy_cache_valid 404 7d;
51
+ expires 30d;
52
+
53
+ proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
54
+ proxy_cache_background_update on;
55
+ proxy_cache_lock on;
56
+ proxy_cache_bypass $cookie_nocache $arg_nocache;
57
+
58
+ add_header X-Cache-Status $upstream_cache_status;
59
+ }
60
+ }
metadata CHANGED
@@ -1,15 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metal_archives
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Dejonckheere
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-13 00:00:00.000000000 Z
11
+ date: 2021-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: countries
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: http
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: zeitwerk
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
13
69
  - !ruby/object:Gem::Dependency
14
70
  name: byebug
15
71
  requirement: !ruby/object:Gem::Requirement
@@ -25,7 +81,7 @@ dependencies:
25
81
  - !ruby/object:Gem::Version
26
82
  version: '0'
27
83
  - !ruby/object:Gem::Dependency
28
- name: rake
84
+ name: debase
29
85
  requirement: !ruby/object:Gem::Requirement
30
86
  requirements:
31
87
  - - ">="
@@ -39,7 +95,7 @@ dependencies:
39
95
  - !ruby/object:Gem::Version
40
96
  version: '0'
41
97
  - !ruby/object:Gem::Dependency
42
- name: rdoc
98
+ name: factory_bot
43
99
  requirement: !ruby/object:Gem::Requirement
44
100
  requirements:
45
101
  - - ">="
@@ -53,7 +109,7 @@ dependencies:
53
109
  - !ruby/object:Gem::Version
54
110
  version: '0'
55
111
  - !ruby/object:Gem::Dependency
56
- name: rspec
112
+ name: fasterer
57
113
  requirement: !ruby/object:Gem::Requirement
58
114
  requirements:
59
115
  - - ">="
@@ -67,7 +123,7 @@ dependencies:
67
123
  - !ruby/object:Gem::Version
68
124
  version: '0'
69
125
  - !ruby/object:Gem::Dependency
70
- name: factory_girl
126
+ name: ffaker
71
127
  requirement: !ruby/object:Gem::Requirement
72
128
  requirements:
73
129
  - - ">="
@@ -81,7 +137,7 @@ dependencies:
81
137
  - !ruby/object:Gem::Version
82
138
  version: '0'
83
139
  - !ruby/object:Gem::Dependency
84
- name: faker
140
+ name: flay
85
141
  requirement: !ruby/object:Gem::Requirement
86
142
  requirements:
87
143
  - - ">="
@@ -95,7 +151,7 @@ dependencies:
95
151
  - !ruby/object:Gem::Version
96
152
  version: '0'
97
153
  - !ruby/object:Gem::Dependency
98
- name: rubocop
154
+ name: overcommit
99
155
  requirement: !ruby/object:Gem::Requirement
100
156
  requirements:
101
157
  - - ">="
@@ -109,7 +165,7 @@ dependencies:
109
165
  - !ruby/object:Gem::Version
110
166
  version: '0'
111
167
  - !ruby/object:Gem::Dependency
112
- name: coveralls
168
+ name: pronto
113
169
  requirement: !ruby/object:Gem::Requirement
114
170
  requirements:
115
171
  - - ">="
@@ -123,7 +179,7 @@ dependencies:
123
179
  - !ruby/object:Gem::Version
124
180
  version: '0'
125
181
  - !ruby/object:Gem::Dependency
126
- name: debase
182
+ name: rake
127
183
  requirement: !ruby/object:Gem::Requirement
128
184
  requirements:
129
185
  - - ">="
@@ -137,13 +193,13 @@ dependencies:
137
193
  - !ruby/object:Gem::Version
138
194
  version: '0'
139
195
  - !ruby/object:Gem::Dependency
140
- name: faraday
196
+ name: rdoc
141
197
  requirement: !ruby/object:Gem::Requirement
142
198
  requirements:
143
199
  - - ">="
144
200
  - !ruby/object:Gem::Version
145
201
  version: '0'
146
- type: :runtime
202
+ type: :development
147
203
  prerelease: false
148
204
  version_requirements: !ruby/object:Gem::Requirement
149
205
  requirements:
@@ -151,13 +207,13 @@ dependencies:
151
207
  - !ruby/object:Gem::Version
152
208
  version: '0'
153
209
  - !ruby/object:Gem::Dependency
154
- name: faraday_throttler
210
+ name: redis
155
211
  requirement: !ruby/object:Gem::Requirement
156
212
  requirements:
157
213
  - - ">="
158
214
  - !ruby/object:Gem::Version
159
215
  version: '0'
160
- type: :runtime
216
+ type: :development
161
217
  prerelease: false
162
218
  version_requirements: !ruby/object:Gem::Requirement
163
219
  requirements:
@@ -165,13 +221,13 @@ dependencies:
165
221
  - !ruby/object:Gem::Version
166
222
  version: '0'
167
223
  - !ruby/object:Gem::Dependency
168
- name: nokogiri
224
+ name: reek
169
225
  requirement: !ruby/object:Gem::Requirement
170
226
  requirements:
171
227
  - - ">="
172
228
  - !ruby/object:Gem::Version
173
229
  version: '0'
174
- type: :runtime
230
+ type: :development
175
231
  prerelease: false
176
232
  version_requirements: !ruby/object:Gem::Requirement
177
233
  requirements:
@@ -179,82 +235,149 @@ dependencies:
179
235
  - !ruby/object:Gem::Version
180
236
  version: '0'
181
237
  - !ruby/object:Gem::Dependency
182
- name: countries
238
+ name: rspec
183
239
  requirement: !ruby/object:Gem::Requirement
184
240
  requirements:
185
241
  - - ">="
186
242
  - !ruby/object:Gem::Version
187
243
  version: '0'
188
- type: :runtime
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: rubocop
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: '0'
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '0'
265
+ - !ruby/object:Gem::Dependency
266
+ name: rubocop-performance
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
279
+ - !ruby/object:Gem::Dependency
280
+ name: rubocop-rspec
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ type: :development
189
287
  prerelease: false
190
288
  version_requirements: !ruby/object:Gem::Requirement
191
289
  requirements:
192
290
  - - ">="
193
291
  - !ruby/object:Gem::Version
194
292
  version: '0'
195
- description:
293
+ - !ruby/object:Gem::Dependency
294
+ name: timecop
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ type: :development
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - ">="
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
307
+ - !ruby/object:Gem::Dependency
308
+ name: webmock
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ type: :development
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: '0'
321
+ description: Ruby API layer that transparently queries, scrapes and caches Metal Archives'
322
+ website
196
323
  email:
197
324
  - florian@floriandejonckheere.be
198
- executables: []
325
+ executables:
326
+ - console
327
+ - setup
199
328
  extensions: []
200
329
  extra_rdoc_files: []
201
330
  files:
331
+ - ".github/workflows/ci.yml"
202
332
  - ".gitignore"
333
+ - ".overcommit.yml"
203
334
  - ".rspec"
204
335
  - ".rubocop.yml"
205
- - ".travis.yml"
206
336
  - CHANGELOG.md
207
337
  - Gemfile
208
338
  - LICENSE.md
209
339
  - README.md
210
340
  - Rakefile
341
+ - bin/console
342
+ - bin/setup
343
+ - config/inflections.rb
344
+ - config/initializers/.keep
345
+ - docker-compose.yml
211
346
  - lib/metal_archives.rb
347
+ - lib/metal_archives/cache/base.rb
348
+ - lib/metal_archives/cache/memory.rb
349
+ - lib/metal_archives/cache/null.rb
350
+ - lib/metal_archives/cache/redis.rb
351
+ - lib/metal_archives/collection.rb
212
352
  - lib/metal_archives/configuration.rb
213
- - lib/metal_archives/error.rb
353
+ - lib/metal_archives/errors.rb
214
354
  - lib/metal_archives/http_client.rb
215
- - lib/metal_archives/middleware/cache_check.rb
216
- - lib/metal_archives/middleware/encoding.rb
217
- - lib/metal_archives/middleware/headers.rb
218
- - lib/metal_archives/middleware/rewrite_endpoint.rb
219
355
  - lib/metal_archives/models/artist.rb
220
356
  - lib/metal_archives/models/band.rb
221
- - lib/metal_archives/models/base_model.rb
357
+ - lib/metal_archives/models/base.rb
222
358
  - lib/metal_archives/models/label.rb
223
359
  - lib/metal_archives/models/release.rb
224
360
  - lib/metal_archives/parsers/artist.rb
225
361
  - lib/metal_archives/parsers/band.rb
362
+ - lib/metal_archives/parsers/base.rb
363
+ - lib/metal_archives/parsers/country.rb
364
+ - lib/metal_archives/parsers/date.rb
365
+ - lib/metal_archives/parsers/genre.rb
226
366
  - lib/metal_archives/parsers/label.rb
227
367
  - lib/metal_archives/parsers/parser.rb
228
368
  - lib/metal_archives/parsers/release.rb
229
- - lib/metal_archives/utils/collection.rb
230
- - lib/metal_archives/utils/lru_cache.rb
231
- - lib/metal_archives/utils/nil_date.rb
232
- - lib/metal_archives/utils/range.rb
369
+ - lib/metal_archives/parsers/year.rb
233
370
  - lib/metal_archives/version.rb
371
+ - metal_archives.env.example
234
372
  - metal_archives.gemspec
373
+ - nginx/default.conf
235
374
  - publish.sh
236
- - spec/configuration_spec.rb
237
- - spec/factories/artist_factory.rb
238
- - spec/factories/band_factory.rb
239
- - spec/factories/nil_date_factory.rb
240
- - spec/factories/range_factory.rb
241
- - spec/models/artist_spec.rb
242
- - spec/models/band_spec.rb
243
- - spec/models/base_model_spec.rb
244
- - spec/models/release_spec.rb
245
- - spec/parser_spec.rb
246
- - spec/spec_helper.rb
247
- - spec/support/factory_girl.rb
248
- - spec/support/metal_archives.rb
249
- - spec/utils/collection_spec.rb
250
- - spec/utils/lru_cache_spec.rb
251
- - spec/utils/nil_date_spec.rb
252
- - spec/utils/range_spec.rb
253
- homepage: http://github.com/floriandejonckheere/metal_archives
375
+ homepage: https://github.com/floriandejonckheere/metal_archives
254
376
  licenses:
255
377
  - MIT
256
- metadata: {}
257
- post_install_message:
378
+ metadata:
379
+ source_code_uri: https://github.com/floriandejonckheere/metal_archives
380
+ post_install_message:
258
381
  rdoc_options: []
259
382
  require_paths:
260
383
  - lib
@@ -262,33 +385,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
262
385
  requirements:
263
386
  - - ">="
264
387
  - !ruby/object:Gem::Version
265
- version: '0'
388
+ version: '2.6'
266
389
  required_rubygems_version: !ruby/object:Gem::Requirement
267
390
  requirements:
268
391
  - - ">="
269
392
  - !ruby/object:Gem::Version
270
393
  version: '0'
271
394
  requirements: []
272
- rubyforge_project:
273
- rubygems_version: 2.6.12
274
- signing_key:
395
+ rubygems_version: 3.1.2
396
+ signing_key:
275
397
  specification_version: 4
276
398
  summary: Metal Archives Ruby API
277
- test_files:
278
- - spec/configuration_spec.rb
279
- - spec/factories/artist_factory.rb
280
- - spec/factories/band_factory.rb
281
- - spec/factories/nil_date_factory.rb
282
- - spec/factories/range_factory.rb
283
- - spec/models/artist_spec.rb
284
- - spec/models/band_spec.rb
285
- - spec/models/base_model_spec.rb
286
- - spec/models/release_spec.rb
287
- - spec/parser_spec.rb
288
- - spec/spec_helper.rb
289
- - spec/support/factory_girl.rb
290
- - spec/support/metal_archives.rb
291
- - spec/utils/collection_spec.rb
292
- - spec/utils/lru_cache_spec.rb
293
- - spec/utils/nil_date_spec.rb
294
- - spec/utils/range_spec.rb
399
+ test_files: []