met_museum 1.3.6 → 1.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +32 -0
- data/.rubocop.yml +13 -0
- data/.travis.yml +1 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +23 -2
- data/Rakefile +1 -1
- data/lib/met_museum/collection.rb +45 -54
- data/lib/met_museum/http_status_code.rb +23 -6
- data/lib/met_museum/version.rb +1 -1
- data/met_museum.gemspec +5 -5
- metadata +18 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 42eaa0e635711cb6b371d1a7cc524b552f40c402c7506b9cda10ef48487f7f3b
|
|
4
|
+
data.tar.gz: 1259dc15496c35bde977e5a66a0449dfb068d2bee0ef6914294bba38a474ae39
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6d8fb6c6316e77adaf4d700e97f68b8af64bc0f9e24a508486252955387778644621e76dc0754f20aadcbd4aa7df1db89e00b6230ea10b1c5955f2bb4e8c9b50
|
|
7
|
+
data.tar.gz: 625e78ae82ad40f8f533e4cb9d3d94e293511ae411d9cbcf5008475770e76b71382efc7914e1f7d1592ad8d1a85b87b7c8f2f9dee64fb9e8987b61518bcf01c9
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
|
2
|
+
# They are provided by a third-party and are governed by
|
|
3
|
+
# separate terms of service, privacy policy, and support
|
|
4
|
+
# documentation.
|
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
|
7
|
+
|
|
8
|
+
name: Ruby
|
|
9
|
+
|
|
10
|
+
on: [push, pull_request]
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
strategy:
|
|
17
|
+
matrix:
|
|
18
|
+
ruby: [ '2.5', '2.6', '2.7' ]
|
|
19
|
+
name: Ruby ${{ matrix.ruby }} spec
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v2
|
|
22
|
+
- name: Set up Ruby
|
|
23
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
|
24
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
|
25
|
+
# uses: ruby/setup-ruby@v1
|
|
26
|
+
uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
|
|
27
|
+
with:
|
|
28
|
+
ruby-version: ${{ matrix.ruby }}
|
|
29
|
+
- name: Install dependencies
|
|
30
|
+
run: bundle install
|
|
31
|
+
- name: Run spec
|
|
32
|
+
run: bundle exec rake
|
data/.rubocop.yml
ADDED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,24 +1,31 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
met_museum (1.3.
|
|
4
|
+
met_museum (1.3.7)
|
|
5
5
|
faraday
|
|
6
6
|
oj
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
+
ast (2.4.1)
|
|
11
12
|
coderay (1.1.2)
|
|
12
13
|
diff-lcs (1.3)
|
|
13
|
-
faraday (0.
|
|
14
|
+
faraday (1.0.1)
|
|
14
15
|
multipart-post (>= 1.2, < 3)
|
|
15
16
|
method_source (0.9.2)
|
|
16
17
|
multipart-post (2.1.1)
|
|
17
18
|
oj (3.10.0)
|
|
19
|
+
parallel (1.19.2)
|
|
20
|
+
parser (2.7.1.4)
|
|
21
|
+
ast (~> 2.4.1)
|
|
18
22
|
pry (0.12.2)
|
|
19
23
|
coderay (~> 1.1.0)
|
|
20
24
|
method_source (~> 0.9.0)
|
|
25
|
+
rainbow (3.0.0)
|
|
21
26
|
rake (13.0.1)
|
|
27
|
+
regexp_parser (1.7.1)
|
|
28
|
+
rexml (3.2.4)
|
|
22
29
|
rspec (3.8.0)
|
|
23
30
|
rspec-core (~> 3.8.0)
|
|
24
31
|
rspec-expectations (~> 3.8.0)
|
|
@@ -34,6 +41,19 @@ GEM
|
|
|
34
41
|
rspec-retry (0.6.1)
|
|
35
42
|
rspec-core (> 3.3)
|
|
36
43
|
rspec-support (3.8.0)
|
|
44
|
+
rubocop (0.86.0)
|
|
45
|
+
parallel (~> 1.10)
|
|
46
|
+
parser (>= 2.7.0.1)
|
|
47
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
48
|
+
regexp_parser (>= 1.7)
|
|
49
|
+
rexml
|
|
50
|
+
rubocop-ast (>= 0.0.3, < 1.0)
|
|
51
|
+
ruby-progressbar (~> 1.7)
|
|
52
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
|
53
|
+
rubocop-ast (0.1.0)
|
|
54
|
+
parser (>= 2.7.0.1)
|
|
55
|
+
ruby-progressbar (1.10.1)
|
|
56
|
+
unicode-display_width (1.7.0)
|
|
37
57
|
|
|
38
58
|
PLATFORMS
|
|
39
59
|
ruby
|
|
@@ -45,6 +65,7 @@ DEPENDENCIES
|
|
|
45
65
|
rake (~> 13.0)
|
|
46
66
|
rspec (~> 3.0)
|
|
47
67
|
rspec-retry
|
|
68
|
+
rubocop
|
|
48
69
|
|
|
49
70
|
BUNDLED WITH
|
|
50
71
|
2.0.2
|
data/Rakefile
CHANGED
|
@@ -10,13 +10,14 @@ module MetMuseum
|
|
|
10
10
|
# @params [Integer] departmentIds Returns any objects in a specific department
|
|
11
11
|
# @return [Hash<total, Integer>] The total number of publicly-available objects
|
|
12
12
|
# @return [Hash<objectIDs, Array<Integer>>] An array containing the object ID of publicly-available object
|
|
13
|
-
def objects(
|
|
13
|
+
def objects(**args)
|
|
14
14
|
options = {
|
|
15
15
|
metadataDate: nil,
|
|
16
16
|
departmentIds: nil
|
|
17
|
-
}.merge(
|
|
17
|
+
}.merge(args)
|
|
18
18
|
options[:metadataDate] = check_date(options[:metadataDate])
|
|
19
|
-
|
|
19
|
+
query = { metadataDate: options[:metadataDate], departmentIds: options[:departmentIds] }
|
|
20
|
+
response = new_faraday(API_ENDPOINT, PUBLIC_URI, query)
|
|
20
21
|
return_response(response)
|
|
21
22
|
end
|
|
22
23
|
|
|
@@ -74,9 +75,9 @@ module MetMuseum
|
|
|
74
75
|
# @return [Hash<tags, Array<String>>] An array of subject keyword tags associated with the object
|
|
75
76
|
# @return [Hash<objectWikidata_URL, string>] Wikidata URL for the object
|
|
76
77
|
# @return [Hash<isTimelineWork, boolean>] Whether the object is on the Timeline of Art History website
|
|
77
|
-
|
|
78
|
-
def object(
|
|
79
|
-
response = new_faraday(API_ENDPOINT, "#{PUBLIC_URI}/#{
|
|
78
|
+
|
|
79
|
+
def object(object_id)
|
|
80
|
+
response = new_faraday(API_ENDPOINT, "#{PUBLIC_URI}/#{object_id}")
|
|
80
81
|
return_response(response)
|
|
81
82
|
end
|
|
82
83
|
|
|
@@ -96,57 +97,31 @@ module MetMuseum
|
|
|
96
97
|
# @return [Integer] total The total number of publicly-available objects
|
|
97
98
|
# @return [Array<Integer>] objectIDs An array containing the object ID of publicly-available object
|
|
98
99
|
# @return [Array<Object>] objects An array containing the objects that contain the search query within the object’s data
|
|
99
|
-
def search(query,
|
|
100
|
-
options =
|
|
101
|
-
limit: 0,
|
|
102
|
-
isHighlight: false,
|
|
103
|
-
departmentId: nil,
|
|
104
|
-
isOnView: nil,
|
|
105
|
-
artistOrCulture: nil,
|
|
106
|
-
medium: nil,
|
|
107
|
-
hasImages: nil,
|
|
108
|
-
geoLocation: nil,
|
|
109
|
-
dateBegin: 0,
|
|
110
|
-
dateEnd: 2000
|
|
111
|
-
}.merge(options)
|
|
100
|
+
def search(query, **args)
|
|
101
|
+
options = default_search_options.merge(args)
|
|
112
102
|
response = new_faraday(API_ENDPOINT, SEARCH_URI, {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
103
|
+
q: query,
|
|
104
|
+
isHighlight: options[:isHighlight],
|
|
105
|
+
departmentId: options[:departmentId],
|
|
106
|
+
isOnView: options[:isOnView],
|
|
107
|
+
artistOrCulture: options[:artistOrCulture],
|
|
108
|
+
medium: options[:medium]&.multi_option,
|
|
109
|
+
hasImages: options[:hasImages],
|
|
110
|
+
geoLocation: options[:geoLocation]&.multi_option,
|
|
111
|
+
dateBegin: options[:dateBegin],
|
|
112
|
+
dateEnd: options[:dateEnd]
|
|
113
|
+
})
|
|
124
114
|
origin_response = return_response(response)
|
|
125
|
-
|
|
126
|
-
origin_response
|
|
115
|
+
limit = options[:limit].to_i
|
|
116
|
+
return origin_response if limit <= 0
|
|
117
|
+
|
|
118
|
+
origin_response["objectIDs"][0..limit - 1].map { |id| MetMuseum::Collection.new.object(id) }
|
|
127
119
|
end
|
|
128
120
|
|
|
129
121
|
private
|
|
130
122
|
|
|
131
123
|
def new_faraday(url, dir, params = nil)
|
|
132
|
-
Faraday.new(:
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
def error_class(response)
|
|
136
|
-
case response.status
|
|
137
|
-
when HTTP_BAD_REQUEST_CODE
|
|
138
|
-
BadRequestError
|
|
139
|
-
when HTTP_UNAUTHORIZED_CODE
|
|
140
|
-
UnauthorizedError
|
|
141
|
-
when HTTP_FORBIDDEN_CODE
|
|
142
|
-
ForbiddenError
|
|
143
|
-
when HTTP_NOT_FOUND_CODE
|
|
144
|
-
NotFoundError
|
|
145
|
-
when HTTP_UNPROCESSABLE_ENTITY_CODE
|
|
146
|
-
UnprocessableEntityError
|
|
147
|
-
else
|
|
148
|
-
ApiError
|
|
149
|
-
end
|
|
124
|
+
Faraday.new(url: url).get dir, params
|
|
150
125
|
end
|
|
151
126
|
|
|
152
127
|
def response_successful?(response)
|
|
@@ -155,7 +130,7 @@ module MetMuseum
|
|
|
155
130
|
|
|
156
131
|
def check_date(date)
|
|
157
132
|
return nil if date.nil?
|
|
158
|
-
return date.to_date.to_s if date.
|
|
133
|
+
return date.to_date.to_s if date.is_a? Date
|
|
159
134
|
|
|
160
135
|
raise TypeError, "Write certain date"
|
|
161
136
|
end
|
|
@@ -163,13 +138,29 @@ module MetMuseum
|
|
|
163
138
|
def return_response(response)
|
|
164
139
|
return Oj.load(response.body) if response_successful?(response)
|
|
165
140
|
|
|
166
|
-
raise error_class(response), "Code: #{response.status}, response: #{response.body}"
|
|
141
|
+
raise MetMuseum.error_class(response), "Code: #{response.status}, response: #{response.body}"
|
|
167
142
|
end
|
|
168
143
|
|
|
169
144
|
def multi_option
|
|
170
|
-
return self if
|
|
171
|
-
return
|
|
145
|
+
return self if is_a? String
|
|
146
|
+
return join("|") if is_a? Array
|
|
147
|
+
|
|
172
148
|
raise TypeError, "Write String or Array type"
|
|
173
149
|
end
|
|
150
|
+
|
|
151
|
+
def default_search_options
|
|
152
|
+
{
|
|
153
|
+
limit: 0,
|
|
154
|
+
isHighlight: false,
|
|
155
|
+
departmentId: nil,
|
|
156
|
+
isOnView: nil,
|
|
157
|
+
artistOrCulture: nil,
|
|
158
|
+
medium: nil,
|
|
159
|
+
hasImages: nil,
|
|
160
|
+
geoLocation: nil,
|
|
161
|
+
dateBegin: 0,
|
|
162
|
+
dateEnd: 2000
|
|
163
|
+
}
|
|
164
|
+
end
|
|
174
165
|
end
|
|
175
166
|
end
|
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
module MetMuseum
|
|
2
|
-
HTTP_OK_CODE = 200
|
|
3
|
-
HTTP_BAD_REQUEST_CODE = 400
|
|
4
|
-
HTTP_UNAUTHORIZED_CODE = 401
|
|
5
|
-
HTTP_FORBIDDEN_CODE = 403
|
|
6
|
-
HTTP_NOT_FOUND_CODE = 404
|
|
7
|
-
HTTP_UNPROCESSABLE_ENTITY_CODE = 429
|
|
2
|
+
HTTP_OK_CODE = 200
|
|
3
|
+
HTTP_BAD_REQUEST_CODE = 400
|
|
4
|
+
HTTP_UNAUTHORIZED_CODE = 401
|
|
5
|
+
HTTP_FORBIDDEN_CODE = 403
|
|
6
|
+
HTTP_NOT_FOUND_CODE = 404
|
|
7
|
+
HTTP_UNPROCESSABLE_ENTITY_CODE = 429
|
|
8
|
+
|
|
9
|
+
def self.error_class(response)
|
|
10
|
+
case response.status
|
|
11
|
+
when HTTP_BAD_REQUEST_CODE
|
|
12
|
+
BadRequestError
|
|
13
|
+
when HTTP_UNAUTHORIZED_CODE
|
|
14
|
+
UnauthorizedError
|
|
15
|
+
when HTTP_FORBIDDEN_CODE
|
|
16
|
+
ForbiddenError
|
|
17
|
+
when HTTP_NOT_FOUND_CODE
|
|
18
|
+
NotFoundError
|
|
19
|
+
when HTTP_UNPROCESSABLE_ENTITY_CODE
|
|
20
|
+
UnprocessableEntityError
|
|
21
|
+
else
|
|
22
|
+
ApiError
|
|
23
|
+
end
|
|
24
|
+
end
|
|
8
25
|
end
|
data/lib/met_museum/version.rb
CHANGED
data/met_museum.gemspec
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
lib = File.expand_path("../lib", __FILE__)
|
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
3
|
require "met_museum/version"
|
|
5
4
|
|
|
@@ -9,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
|
9
8
|
spec.authors = ["hyuraku"]
|
|
10
9
|
spec.email = ["calenthird@gamil.com"]
|
|
11
10
|
|
|
12
|
-
spec.summary =
|
|
13
|
-
spec.description =
|
|
11
|
+
spec.summary = "MET museum api wrapper"
|
|
12
|
+
spec.description = "The Metropolitan Museum of Art Collection API wrapper "
|
|
14
13
|
spec.homepage = "https://github.com/hyuraku/met_museum"
|
|
15
14
|
spec.license = "MIT"
|
|
16
15
|
|
|
@@ -27,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
|
27
26
|
|
|
28
27
|
# Specify which files should be added to the gem when it is released.
|
|
29
28
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
30
|
-
spec.files
|
|
29
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
31
30
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
32
31
|
end
|
|
33
32
|
spec.bindir = "exe"
|
|
@@ -38,6 +37,7 @@ Gem::Specification.new do |spec|
|
|
|
38
37
|
spec.add_development_dependency "rake", "~> 13.0"
|
|
39
38
|
spec.add_development_dependency "rspec", "~> 3.0"
|
|
40
39
|
spec.add_development_dependency "rspec-retry"
|
|
40
|
+
spec.add_development_dependency "rubocop"
|
|
41
41
|
|
|
42
42
|
spec.add_dependency "faraday"
|
|
43
43
|
spec.add_dependency "oj"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: met_museum
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.3.
|
|
4
|
+
version: 1.3.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- hyuraku
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-07-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -66,6 +66,20 @@ dependencies:
|
|
|
66
66
|
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rubocop
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: faraday
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -101,8 +115,10 @@ executables: []
|
|
|
101
115
|
extensions: []
|
|
102
116
|
extra_rdoc_files: []
|
|
103
117
|
files:
|
|
118
|
+
- ".github/workflows/ruby.yml"
|
|
104
119
|
- ".gitignore"
|
|
105
120
|
- ".rspec"
|
|
121
|
+
- ".rubocop.yml"
|
|
106
122
|
- ".travis.yml"
|
|
107
123
|
- CODE_OF_CONDUCT.md
|
|
108
124
|
- Gemfile
|