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.
- checksums.yaml +5 -5
- data/.github/workflows/ci.yml +93 -0
- data/.gitignore +6 -6
- data/.overcommit.yml +35 -0
- data/.rspec +2 -0
- data/.rubocop.yml +66 -6
- data/CHANGELOG.md +33 -0
- data/Gemfile +1 -1
- data/LICENSE.md +17 -4
- data/README.md +65 -86
- data/Rakefile +8 -7
- data/bin/console +38 -0
- data/bin/setup +8 -0
- data/config/inflections.rb +7 -0
- data/config/initializers/.keep +0 -0
- data/docker-compose.yml +23 -0
- data/lib/metal_archives.rb +82 -27
- data/lib/metal_archives/cache/base.rb +40 -0
- data/lib/metal_archives/cache/memory.rb +68 -0
- data/lib/metal_archives/cache/null.rb +22 -0
- data/lib/metal_archives/cache/redis.rb +49 -0
- data/lib/metal_archives/{utils/collection.rb → collection.rb} +3 -5
- data/lib/metal_archives/configuration.rb +33 -50
- data/lib/metal_archives/{error.rb → errors.rb} +9 -1
- data/lib/metal_archives/http_client.rb +45 -44
- data/lib/metal_archives/models/artist.rb +90 -45
- data/lib/metal_archives/models/band.rb +77 -52
- data/lib/metal_archives/models/base.rb +225 -0
- data/lib/metal_archives/models/label.rb +14 -15
- data/lib/metal_archives/models/release.rb +25 -29
- data/lib/metal_archives/parsers/artist.rb +86 -50
- data/lib/metal_archives/parsers/band.rb +155 -88
- data/lib/metal_archives/parsers/base.rb +14 -0
- data/lib/metal_archives/parsers/country.rb +21 -0
- data/lib/metal_archives/parsers/date.rb +31 -0
- data/lib/metal_archives/parsers/genre.rb +67 -0
- data/lib/metal_archives/parsers/label.rb +39 -31
- data/lib/metal_archives/parsers/parser.rb +18 -63
- data/lib/metal_archives/parsers/release.rb +98 -89
- data/lib/metal_archives/parsers/year.rb +31 -0
- data/lib/metal_archives/version.rb +12 -1
- data/metal_archives.env.example +10 -0
- data/metal_archives.gemspec +43 -28
- data/nginx/default.conf +60 -0
- metadata +179 -74
- data/.travis.yml +0 -12
- data/lib/metal_archives/middleware/cache_check.rb +0 -20
- data/lib/metal_archives/middleware/encoding.rb +0 -16
- data/lib/metal_archives/middleware/headers.rb +0 -38
- data/lib/metal_archives/middleware/rewrite_endpoint.rb +0 -38
- data/lib/metal_archives/models/base_model.rb +0 -215
- data/lib/metal_archives/utils/lru_cache.rb +0 -61
- data/lib/metal_archives/utils/nil_date.rb +0 -99
- data/lib/metal_archives/utils/range.rb +0 -66
- data/spec/configuration_spec.rb +0 -96
- data/spec/factories/artist_factory.rb +0 -37
- data/spec/factories/band_factory.rb +0 -60
- data/spec/factories/nil_date_factory.rb +0 -9
- data/spec/factories/range_factory.rb +0 -8
- data/spec/models/artist_spec.rb +0 -138
- data/spec/models/band_spec.rb +0 -164
- data/spec/models/base_model_spec.rb +0 -219
- data/spec/models/release_spec.rb +0 -133
- data/spec/parser_spec.rb +0 -19
- data/spec/spec_helper.rb +0 -111
- data/spec/support/factory_girl.rb +0 -5
- data/spec/support/metal_archives.rb +0 -33
- data/spec/utils/collection_spec.rb +0 -72
- data/spec/utils/lru_cache_spec.rb +0 -53
- data/spec/utils/nil_date_spec.rb +0 -156
- 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
|
-
|
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
|
data/metal_archives.gemspec
CHANGED
@@ -1,36 +1,51 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require_relative "lib/metal_archives/version"
|
5
4
|
|
6
|
-
|
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
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
-
|
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.
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
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
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|
data/nginx/default.conf
ADDED
@@ -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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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: :
|
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:
|
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: :
|
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:
|
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: :
|
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:
|
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: :
|
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
|
-
|
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/
|
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/
|
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/
|
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
|
-
|
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
|
-
|
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: '
|
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
|
-
|
273
|
-
|
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: []
|