met_museum 1.3.6 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f6c889b04efc44af710a4bf5ee316ac4f1eb1f8c1c639854a51b6cc4e721052
4
- data.tar.gz: 497b94cb694f008ba8df1023e8c4ba3e51e9e4574c1b9479a6a21b325af7dcfe
3
+ metadata.gz: 747d015331b55f840aa0065fbfc3e2822fda2f2f52a5a6ddede4b7f62ade5735
4
+ data.tar.gz: ac3158ff771e89fc1fb3d563920b02797c97c15be9dbd8a1ed5618649b53194b
5
5
  SHA512:
6
- metadata.gz: 0acb38e8a3e368d04515b8fb36519022e965ce65634cf02d1ea9c9062d57d577b270a26f954f711022b424a95290095c5361857c8ee414e5cdda1005d5c66b42
7
- data.tar.gz: bb2730f3aa1efa1f5f06520279e71eb187a6ff813906409fdbbd8340575a64102d0ae6e6875fbe0c3475954fa6f37b4d7264c15b276e8093166071f19cc19359
6
+ metadata.gz: c02a1a47672656535464183e79b4129b0d4b12632b48382afe8a3aff36d24af355620b51097324157f04342c361dcf62d74396916b52edf05359de6a011a37b1
7
+ data.tar.gz: 33eedda5f92fe536476dd03c0ba50aad36610f09440fcf15317b905baeac576108d3ac7993269a2619ed403c3ab5883a21193d87da2f72c3fb9e5358a67dd58f
@@ -0,0 +1,33 @@
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.6', '2.7', '3.0', '3.1' ]
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
+ bundler-cache: true
30
+ - name: Install dependencies
31
+ run: bundle install
32
+ - name: Run spec
33
+ run: bundle exec rake
data/.rubocop.yml ADDED
@@ -0,0 +1,13 @@
1
+ Style/StringLiterals:
2
+ Enabled: true
3
+ EnforcedStyle: double_quotes
4
+
5
+ Style/FrozenStringLiteralComment:
6
+ Enabled: false
7
+
8
+ Documentation:
9
+ Enabled: false
10
+
11
+ Metrics/AbcSize:
12
+ Enabled: true
13
+ Max: 20
data/.travis.yml CHANGED
@@ -3,6 +3,7 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
+ - 2.7.1
6
7
  - 2.6.0
7
8
  - 2.5.0
8
9
  script:
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  group :development do
4
- gem 'pry'
4
+ gem "pry"
5
5
  end
6
6
 
7
7
  # Specify your gem's dependencies in met_museum.gemspec
data/Gemfile.lock CHANGED
@@ -1,24 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- met_museum (1.3.5)
4
+ met_museum (1.4.1)
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.17.1)
14
+ faraday (1.2.0)
14
15
  multipart-post (>= 1.2, < 3)
16
+ ruby2_keywords
15
17
  method_source (0.9.2)
16
18
  multipart-post (2.1.1)
17
- oj (3.10.0)
19
+ oj (3.10.6)
20
+ parallel (1.19.2)
21
+ parser (2.7.1.4)
22
+ ast (~> 2.4.1)
18
23
  pry (0.12.2)
19
24
  coderay (~> 1.1.0)
20
25
  method_source (~> 0.9.0)
26
+ rainbow (3.0.0)
21
27
  rake (13.0.1)
28
+ regexp_parser (1.7.1)
29
+ rexml (3.2.5)
22
30
  rspec (3.8.0)
23
31
  rspec-core (~> 3.8.0)
24
32
  rspec-expectations (~> 3.8.0)
@@ -34,6 +42,20 @@ GEM
34
42
  rspec-retry (0.6.1)
35
43
  rspec-core (> 3.3)
36
44
  rspec-support (3.8.0)
45
+ rubocop (0.86.0)
46
+ parallel (~> 1.10)
47
+ parser (>= 2.7.0.1)
48
+ rainbow (>= 2.2.2, < 4.0)
49
+ regexp_parser (>= 1.7)
50
+ rexml
51
+ rubocop-ast (>= 0.0.3, < 1.0)
52
+ ruby-progressbar (~> 1.7)
53
+ unicode-display_width (>= 1.4.0, < 2.0)
54
+ rubocop-ast (0.1.0)
55
+ parser (>= 2.7.0.1)
56
+ ruby-progressbar (1.10.1)
57
+ ruby2_keywords (0.0.5)
58
+ unicode-display_width (1.7.0)
37
59
 
38
60
  PLATFORMS
39
61
  ruby
@@ -45,6 +67,7 @@ DEPENDENCIES
45
67
  rake (~> 13.0)
46
68
  rspec (~> 3.0)
47
69
  rspec-retry
70
+ rubocop
48
71
 
49
72
  BUNDLED WITH
50
73
  2.0.2
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2020 hyuraku
3
+ Copyright (c) 2021 hyuraku
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -322,4 +322,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
322
322
 
323
323
  ## Code of Conduct
324
324
 
325
- Everyone interacting in the MetMuseum project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/met_museum/blob/master/CODE_OF_CONDUCT.md).
325
+ Everyone interacting in the MetMuseum project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/hyuraku/met_museum/blob/master/CODE_OF_CONDUCT.md).
data/Rakefile CHANGED
@@ -3,4 +3,4 @@ require "rspec/core/rake_task"
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
@@ -2,6 +2,9 @@ require "met_museum/api_expections"
2
2
  require "met_museum/endpoint"
3
3
  require "met_museum/http_status_code"
4
4
 
5
+ require "faraday"
6
+ require "oj"
7
+
5
8
  module MetMuseum
6
9
  class Collection
7
10
  # Return a listing of all valid Object IDs available to use
@@ -10,14 +13,16 @@ module MetMuseum
10
13
  # @params [Integer] departmentIds Returns any objects in a specific department
11
14
  # @return [Hash<total, Integer>] The total number of publicly-available objects
12
15
  # @return [Hash<objectIDs, Array<Integer>>] An array containing the object ID of publicly-available object
13
- def objects(options = {})
16
+ def objects(**args)
14
17
  options = {
15
18
  metadataDate: nil,
16
19
  departmentIds: nil
17
- }.merge(options)
20
+ }.merge(args)
21
+
18
22
  options[:metadataDate] = check_date(options[:metadataDate])
19
- response = new_faraday(API_ENDPOINT, PUBLIC_URI, {:metadataDate => options[:metadataDate], :departmentIds => options[:departmentIds]})
20
- return_response(response)
23
+ query = { metadataDate: options[:metadataDate], departmentIds: options[:departmentIds] }
24
+ response = create_request(API_ENDPOINT, PUBLIC_URI, query)
25
+ arrange_response(response)
21
26
  end
22
27
 
23
28
  # returns a record for an object, containing all open access data about that object, including its image (if the image is available under Open Access)
@@ -53,6 +58,8 @@ module MetMuseum
53
58
  # @return [Hash<objectEndDate, string>] Machine readable date indicating the year the artwork was completed (may be the same year or different year than the objectBeginDate)
54
59
  # @return [Hash<medium, string>] Refers to the materials that were used to create the artwork
55
60
  # @return [Hash<dimensions, string>] Size of the artwork or object
61
+ # @return [Hash<dimensionsParsed, Array<Hash>>] Size of the artwork or object in centimeters, parsed
62
+ # @return [Hash<measurements, Array<Hash>>] Array of elements, each with a name, description, and set of measurements. Spatial measurements are in centimeters; weights are in kg.
56
63
  # @return [Hash<creditLine, String>] Text acknowledging the source or origin of the artwork and the year the object was acquired by the museum.
57
64
  # @return [Hash<geographyType, String>] Qualifying information that describes the relationship of the place catalogued in the geography fields to the object that is being catalogued
58
65
  # @return [Hash<city, String>] City where the artwork was created
@@ -74,10 +81,11 @@ module MetMuseum
74
81
  # @return [Hash<tags, Array<String>>] An array of subject keyword tags associated with the object
75
82
  # @return [Hash<objectWikidata_URL, string>] Wikidata URL for the object
76
83
  # @return [Hash<isTimelineWork, boolean>] Whether the object is on the Timeline of Art History website
77
-
78
- def object(objectID)
79
- response = new_faraday(API_ENDPOINT, "#{PUBLIC_URI}/#{objectID}")
80
- return_response(response)
84
+ # @return [Hash<GalleryNumber, string>] Gallery number, where available
85
+
86
+ def object(object_id)
87
+ response = create_request(API_ENDPOINT, "#{PUBLIC_URI}/#{object_id}")
88
+ arrange_response(response)
81
89
  end
82
90
 
83
91
  # returns a listing of all departments
@@ -85,8 +93,8 @@ module MetMuseum
85
93
  # @return [Integer] departments Department ID as an integer. The departmentId is to be used as a query parameter on the `/objects` endpoint
86
94
  # @return [String] departments Display name for a department
87
95
  def department
88
- response = new_faraday(API_ENDPOINT, DEPARTMENTS_URI)
89
- return_response(response)
96
+ response = create_request(API_ENDPOINT, DEPARTMENTS_URI)
97
+ arrange_response(response)
90
98
  end
91
99
 
92
100
  # returns a listing of all Object IDs for objects that contain the search query within the object’s data
@@ -96,57 +104,20 @@ module MetMuseum
96
104
  # @return [Integer] total The total number of publicly-available objects
97
105
  # @return [Array<Integer>] objectIDs An array containing the object ID of publicly-available object
98
106
  # @return [Array<Object>] objects An array containing the objects that contain the search query within the object’s data
99
- def search(query, options = {})
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)
112
- response = new_faraday(API_ENDPOINT, SEARCH_URI, {
113
- :q => query,
114
- :isHighlight => options[:isHighlight],
115
- :departmentId => options[:departmentId],
116
- :isOnView => options[:isOnView],
117
- :artistOrCulture => options[:artistOrCulture],
118
- :medium => options[:medium]&.multi_option,
119
- :hasImages => options[:hasImages],
120
- :geoLocation => options[:geoLocation]&.multi_option,
121
- :dateBegin => options[:dateBegin],
122
- :dateEnd => options[:dateEnd]
123
- })
124
- origin_response = return_response(response)
125
- return origin_response if options[:limit] <= 0
126
- origin_response["objectIDs"][0..options[:limit] - 1].map{|id| MetMuseum::Collection.new.object(id)}
107
+ def search(query, **args)
108
+ args.merge!({q: query})
109
+ response = create_request(API_ENDPOINT, SEARCH_URI, args)
110
+ origin_response = arrange_response(response)
111
+ limit = args[:limit].to_i
112
+ return origin_response if limit <= 0
113
+
114
+ origin_response["objectIDs"].lazy.map { |id| MetMuseum::Collection.new.object(id) }.first(limit)
127
115
  end
128
116
 
129
117
  private
130
118
 
131
- def new_faraday(url, dir, params = nil)
132
- Faraday.new(:url => url).get dir, params
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
119
+ def create_request(url, dir, params = nil)
120
+ Faraday.new(url: url).get dir, params
150
121
  end
151
122
 
152
123
  def response_successful?(response)
@@ -155,20 +126,21 @@ module MetMuseum
155
126
 
156
127
  def check_date(date)
157
128
  return nil if date.nil?
158
- return date.to_date.to_s if date.kind_of? Date
129
+ return date.to_date.to_s if date.is_a? Date
159
130
 
160
131
  raise TypeError, "Write certain date"
161
132
  end
162
133
 
163
- def return_response(response)
134
+ def arrange_response(response)
164
135
  return Oj.load(response.body) if response_successful?(response)
165
136
 
166
- raise error_class(response), "Code: #{response.status}, response: #{response.body}"
137
+ raise MetMuseum.error_class(response), "Code: #{response.status}, response: #{response.body}"
167
138
  end
168
139
 
169
140
  def multi_option
170
- return self if self.kind_of? String
171
- return self.join('|') if self.kind_of? Array
141
+ return self if is_a? String
142
+ return join("|") if is_a? Array
143
+
172
144
  raise TypeError, "Write String or Array type"
173
145
  end
174
146
  end
@@ -1,8 +1,25 @@
1
1
  module MetMuseum
2
- HTTP_OK_CODE = 200.freeze
3
- HTTP_BAD_REQUEST_CODE = 400.freeze
4
- HTTP_UNAUTHORIZED_CODE = 401.freeze
5
- HTTP_FORBIDDEN_CODE = 403.freeze
6
- HTTP_NOT_FOUND_CODE = 404.freeze
7
- HTTP_UNPROCESSABLE_ENTITY_CODE = 429.freeze
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
@@ -1,3 +1,3 @@
1
1
  module MetMuseum
2
- VERSION = "1.3.6"
2
+ VERSION = "1.4.1".freeze
3
3
  end
data/lib/met_museum.rb CHANGED
@@ -1,6 +1,3 @@
1
- require "faraday"
2
- require "oj"
3
-
4
1
  require "met_museum/collection"
5
2
  require "met_museum/version"
6
3
 
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 = %q{MET museum api wrapper}
13
- spec.description = %q{The Metropolitan Museum of Art Collection API wrapper }
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 = Dir.chdir(File.expand_path('..', __FILE__)) do
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.6
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - hyuraku
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-13 00:00:00.000000000 Z
11
+ date: 2022-02-05 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
@@ -124,7 +140,7 @@ licenses:
124
140
  - MIT
125
141
  metadata:
126
142
  homepage_uri: https://github.com/hyuraku/met_museum
127
- post_install_message:
143
+ post_install_message:
128
144
  rdoc_options: []
129
145
  require_paths:
130
146
  - lib
@@ -139,8 +155,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
155
  - !ruby/object:Gem::Version
140
156
  version: '0'
141
157
  requirements: []
142
- rubygems_version: 3.0.3
143
- signing_key:
158
+ rubygems_version: 3.3.3
159
+ signing_key:
144
160
  specification_version: 4
145
161
  summary: MET museum api wrapper
146
162
  test_files: []