metal_archives 2.2.0 → 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
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: []