mais_orcid_client 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0e2c78bcd8751c9a2f6d972c46874a7637165d94f26ae15e360d73c1f522ce41
4
+ data.tar.gz: e8f6bef5eff960802afceacf18054bd394e105f67ec3e95a3c63c7b7cd07942a
5
+ SHA512:
6
+ metadata.gz: ee77115c58f6ebc00b095e6d3938d5094deefb22be8d8317b2b7659fe46c1e38a56540ae7dc6a682907de4c11f60f97926dc79bff6454f22c2fac297c1230a1c
7
+ data.tar.gz: f3b4d14e03c95d3ea9f9f7b40f9340433c7d757743cc89229529aa87063573af087e690ee568647aa63c967f74a6e31e3bd9a615538e82e0d4a9908b5009323c
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
@@ -0,0 +1,54 @@
1
+ AllCops:
2
+ TargetRubyVersion: 3.1
3
+ DisplayCopNames: true
4
+ SuggestExtensions: false
5
+ Exclude:
6
+ - bin/**
7
+ - vendor/bundle/**/*
8
+
9
+ # Per team developer playbook
10
+ RSpec/MultipleMemoizedHelpers:
11
+ Enabled: false
12
+
13
+ RSpec/BeEq: # new in 2.9.0
14
+ Enabled: true
15
+ RSpec/BeNil: # new in 2.9.0
16
+ Enabled: true
17
+ RSpec/ChangeByZero: # new in 2.11
18
+ Enabled: true
19
+ RSpec/ClassCheck: # new in 2.13
20
+ Enabled: true
21
+ RSpec/ExcessiveDocstringSpacing: # new in 2.5
22
+ Enabled: true
23
+ RSpec/IdenticalEqualityAssertion: # new in 2.4
24
+ Enabled: true
25
+ RSpec/NoExpectationExample: # new in 2.13
26
+ Enabled: true
27
+ RSpec/SortMetadata: # new in 2.14
28
+ Enabled: true
29
+ RSpec/SubjectDeclaration: # new in 2.5
30
+ Enabled: true
31
+ RSpec/VerifiedDoubleReference: # new in 2.10.0
32
+ Enabled: true
33
+ Capybara/NegationMatcher: # new in 2.14
34
+ Enabled: true
35
+ Capybara/SpecificActions: # new in 2.14
36
+ Enabled: true
37
+ Capybara/SpecificFinders: # new in 2.13
38
+ Enabled: true
39
+ Capybara/SpecificMatcher: # new in 2.12
40
+ Enabled: true
41
+ FactoryBot/ConsistentParenthesesStyle: # new in 2.14
42
+ Enabled: true
43
+ FactoryBot/SyntaxMethods: # new in 2.7
44
+ Enabled: true
45
+ RSpec/Rails/AvoidSetupHook: # new in 2.4
46
+ Enabled: true
47
+ RSpec/Rails/HaveHttpStatus: # new in 2.12
48
+ Enabled: true
49
+ RSpec/Rails/InferredSpecType: # new in 2.14
50
+ Enabled: true
51
+
52
+ RSpec/MultipleExpectations:
53
+ Enabled: false
54
+
data/.rubocop.yml ADDED
@@ -0,0 +1,16 @@
1
+ inherit_mode:
2
+ merge:
3
+ - Exclude
4
+
5
+ require:
6
+ - standard
7
+ - rubocop-performance
8
+ - rubocop-rspec
9
+
10
+ inherit_gem:
11
+ standard: config/base.yml
12
+ standard-performance: config/base.yml
13
+ standard-custom: config/base.yml
14
+
15
+ inherit_from:
16
+ - .rubocop/custom.yml
data/.standard.yml ADDED
@@ -0,0 +1 @@
1
+ parallel: true
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in mais_orcid_client.gemspec
6
+ gemspec
7
+
8
+ gem "byebug"
data/Gemfile.lock ADDED
@@ -0,0 +1,150 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ mais_orcid_client (0.1.0)
5
+ activesupport (>= 4.2, < 8)
6
+ faraday
7
+ faraday-retry
8
+ oauth2
9
+ zeitwerk
10
+
11
+ GEM
12
+ remote: https://rubygems.org/
13
+ specs:
14
+ activesupport (7.0.6)
15
+ concurrent-ruby (~> 1.0, >= 1.0.2)
16
+ i18n (>= 1.6, < 2)
17
+ minitest (>= 5.1)
18
+ tzinfo (~> 2.0)
19
+ addressable (2.8.4)
20
+ public_suffix (>= 2.0.2, < 6.0)
21
+ ast (2.4.2)
22
+ byebug (11.1.3)
23
+ concurrent-ruby (1.2.2)
24
+ crack (0.4.5)
25
+ rexml
26
+ diff-lcs (1.5.0)
27
+ docile (1.4.0)
28
+ faraday (2.7.10)
29
+ faraday-net_http (>= 2.0, < 3.1)
30
+ ruby2_keywords (>= 0.0.4)
31
+ faraday-net_http (3.0.2)
32
+ faraday-retry (2.2.0)
33
+ faraday (~> 2.0)
34
+ hashdiff (1.0.1)
35
+ hashie (5.0.0)
36
+ i18n (1.14.1)
37
+ concurrent-ruby (~> 1.0)
38
+ json (2.6.3)
39
+ jwt (2.7.1)
40
+ language_server-protocol (3.17.0.3)
41
+ lint_roller (1.0.0)
42
+ minitest (5.18.1)
43
+ multi_xml (0.6.0)
44
+ oauth2 (2.0.9)
45
+ faraday (>= 0.17.3, < 3.0)
46
+ jwt (>= 1.0, < 3.0)
47
+ multi_xml (~> 0.5)
48
+ rack (>= 1.2, < 4)
49
+ snaky_hash (~> 2.0)
50
+ version_gem (~> 1.1)
51
+ parallel (1.23.0)
52
+ parser (3.2.2.3)
53
+ ast (~> 2.4.1)
54
+ racc
55
+ public_suffix (5.0.1)
56
+ racc (1.7.1)
57
+ rack (3.0.8)
58
+ rainbow (3.1.1)
59
+ rake (13.0.6)
60
+ regexp_parser (2.8.1)
61
+ rexml (3.2.5)
62
+ rspec (3.12.0)
63
+ rspec-core (~> 3.12.0)
64
+ rspec-expectations (~> 3.12.0)
65
+ rspec-mocks (~> 3.12.0)
66
+ rspec-core (3.12.2)
67
+ rspec-support (~> 3.12.0)
68
+ rspec-expectations (3.12.3)
69
+ diff-lcs (>= 1.2.0, < 2.0)
70
+ rspec-support (~> 3.12.0)
71
+ rspec-mocks (3.12.5)
72
+ diff-lcs (>= 1.2.0, < 2.0)
73
+ rspec-support (~> 3.12.0)
74
+ rspec-support (3.12.1)
75
+ rubocop (1.52.1)
76
+ json (~> 2.3)
77
+ parallel (~> 1.10)
78
+ parser (>= 3.2.2.3)
79
+ rainbow (>= 2.2.2, < 4.0)
80
+ regexp_parser (>= 1.8, < 3.0)
81
+ rexml (>= 3.2.5, < 4.0)
82
+ rubocop-ast (>= 1.28.0, < 2.0)
83
+ ruby-progressbar (~> 1.7)
84
+ unicode-display_width (>= 2.4.0, < 3.0)
85
+ rubocop-ast (1.29.0)
86
+ parser (>= 3.2.1.0)
87
+ rubocop-capybara (2.18.0)
88
+ rubocop (~> 1.41)
89
+ rubocop-factory_bot (2.23.1)
90
+ rubocop (~> 1.33)
91
+ rubocop-performance (1.18.0)
92
+ rubocop (>= 1.7.0, < 2.0)
93
+ rubocop-ast (>= 0.4.0)
94
+ rubocop-rspec (2.22.0)
95
+ rubocop (~> 1.33)
96
+ rubocop-capybara (~> 2.17)
97
+ rubocop-factory_bot (~> 2.22)
98
+ ruby-progressbar (1.13.0)
99
+ ruby2_keywords (0.0.5)
100
+ simplecov (0.22.0)
101
+ docile (~> 1.1)
102
+ simplecov-html (~> 0.11)
103
+ simplecov_json_formatter (~> 0.1)
104
+ simplecov-html (0.12.3)
105
+ simplecov_json_formatter (0.1.4)
106
+ snaky_hash (2.0.1)
107
+ hashie
108
+ version_gem (~> 1.1, >= 1.1.1)
109
+ standard (1.29.0)
110
+ language_server-protocol (~> 3.17.0.2)
111
+ lint_roller (~> 1.0)
112
+ rubocop (~> 1.52.0)
113
+ standard-custom (~> 1.0.0)
114
+ standard-performance (~> 1.1.0)
115
+ standard-custom (1.0.1)
116
+ lint_roller (~> 1.0)
117
+ standard-performance (1.1.0)
118
+ lint_roller (~> 1.0)
119
+ rubocop-performance (~> 1.18.0)
120
+ tzinfo (2.0.6)
121
+ concurrent-ruby (~> 1.0)
122
+ unicode-display_width (2.4.2)
123
+ vcr (6.2.0)
124
+ version_gem (1.1.3)
125
+ webmock (3.18.1)
126
+ addressable (>= 2.8.0)
127
+ crack (>= 0.3.2)
128
+ hashdiff (>= 0.4.0, < 2.0.0)
129
+ zeitwerk (2.6.8)
130
+
131
+ PLATFORMS
132
+ x86_64-darwin-19
133
+ x86_64-darwin-20
134
+ x86_64-darwin-21
135
+ x86_64-darwin-22
136
+ x86_64-linux
137
+
138
+ DEPENDENCIES
139
+ byebug
140
+ mais_orcid_client!
141
+ rake (~> 13.0)
142
+ rspec (~> 3.0)
143
+ rubocop-rspec
144
+ simplecov
145
+ standard
146
+ vcr
147
+ webmock
148
+
149
+ BUNDLED WITH
150
+ 2.4.13
data/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+
2
+ Copyright (c) 2022 by The Board of Trustees of the Leland Stanford
3
+ Junior University. All rights reserved.
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License"); you
6
+ may not use this file except in compliance with the License. You
7
+ may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14
+ implied. See the License for the specific language governing
15
+ permissions and limitations under the License.
data/README.md ADDED
@@ -0,0 +1,60 @@
1
+ [![Gem Version](https://badge.fury.io/rb/mais_orcid_client.svg)](https://badge.fury.io/rb/mais_orcid_client)
2
+ [![CircleCI](https://circleci.com/gh/sul-dlss/mais_orcid_client.svg?style=svg)](https://circleci.com/gh/sul-dlss/mais_orcid_client)
3
+ [![Maintainability](https://api.codeclimate.com/v1/badges/5919e7ae4cd162861585/maintainability)](https://codeclimate.com/github/sul-dlss/mais_orcid_client/maintainability)
4
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/5919e7ae4cd162861585/test_coverage)](https://codeclimate.com/github/sul-dlss/mais_orcid_client/test_coverage)
5
+
6
+ # mais_orcid_client
7
+ API client for accessing MAIS's ORCID endpoints.
8
+
9
+ ## Installation
10
+
11
+ Install the gem and add to the application's Gemfile by executing:
12
+
13
+ $ bundle add mais_orcid_client
14
+
15
+ If bundler is not being used to manage dependencies, install the gem by executing:
16
+
17
+ $ gem install mais_orcid_client
18
+
19
+ ## Usage
20
+
21
+ For one-off requests:
22
+
23
+ ```ruby
24
+ require "mais_orcid_client"
25
+
26
+ # NOTE: The settings below live in the consumer, not in the gem.
27
+ client = MaisOrcidClient.configure(
28
+ client_id: Settings.mais_orcid.client_id,
29
+ client_secret: Settings.mais_orcid.client_secret,
30
+ base_url: Settings.mais_orcid.base_url
31
+ )
32
+ client.fetch_orcid_user(sunetid: 'nataliex')
33
+ ```
34
+
35
+ You can also invoke methods directly on the client class, which is useful in a
36
+ Rails application environment where you might initialize the client in an
37
+ initializer and then invoke client methods in many other contexts where you want
38
+ to be sure configuration has already occurred, e.g.:
39
+
40
+ ```ruby
41
+ # config/initializers/mais_orcid_client.rb
42
+ MaisOrcidClient.configure(
43
+ client_id: Settings.mais_orcid.client_id,
44
+ client_secret: Settings.mais_orcid.client_secret,
45
+ base_url: Settings.mais_orcid.base_url
46
+ )
47
+
48
+ # app/services/my_mais_orcid_service.rb
49
+ # ...
50
+ def create_user_directory
51
+ MaisOrcidClient.fetch_orcid_user(sunetid: 'nataliex')
52
+ end
53
+ # ...
54
+ ```
55
+
56
+ ## Development
57
+
58
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
59
+
60
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+ require "rubocop/rake_task"
6
+
7
+ RSpec::Core::RakeTask.new(:spec)
8
+ RuboCop::RakeTask.new
9
+
10
+ task default: %i[rubocop spec]
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class MaisOrcidClient
4
+ VERSION = "0.1.0"
5
+ end
@@ -0,0 +1,119 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/core_ext/module/delegation"
4
+ require "active_support/core_ext/hash/indifferent_access"
5
+
6
+ require "faraday"
7
+ require "faraday/retry"
8
+ require "oauth2"
9
+ require "singleton"
10
+ require "zeitwerk"
11
+
12
+ # Load the gem's internal dependencies: use Zeitwerk instead of needing to manually require classes
13
+ Zeitwerk::Loader.for_gem.setup
14
+
15
+ # Client for interacting with MAIS's ORCID API
16
+ class MaisOrcidClient
17
+ include Singleton
18
+
19
+ # Struct for ORCID-relating data returned from API.
20
+ OrcidUser = Struct.new(:sunetid, :orcidid, :scope, :access_token, :last_updated) do
21
+ def update?
22
+ scope.include?("/activities/update")
23
+ end
24
+ end
25
+
26
+ class << self
27
+ # @param client_id [String] the client identifier registered with MAIS
28
+ # @param client_secret [String] the client secret to authenticate with MAIS
29
+ # @param base_url [String] the base URL for the API
30
+ def configure(client_id:, client_secret:, base_url:)
31
+ instance.base_url = base_url
32
+ instance.client_id = client_id
33
+ instance.client_secret = client_secret
34
+ self
35
+ end
36
+
37
+ delegate :fetch_orcid_users, :fetch_orcid_user, to: :instance
38
+ end
39
+
40
+ attr_accessor :base_url, :client_id, :client_secret
41
+
42
+ # @param [int] limit number of users requested
43
+ # @param [int] page_size number of users per page
44
+ # @return [Array<OrcidUser>] orcid users
45
+ def fetch_orcid_users(limit: nil, page_size: nil)
46
+ orcid_users = []
47
+ next_page = first_page(page_size)
48
+ loop do
49
+ response = get_response(next_page)
50
+ response[:results].each do |result|
51
+ orcid_users << OrcidUser.new(result[:sunet_id], result[:orcid_id], result[:scope], result[:access_token], result[:last_updated])
52
+ return orcid_users if limit && limit == orcid_users.size
53
+ end
54
+ # Currently next is always present, even on last page. (This may be changed in future.)
55
+ next_page = response.dig(:links, :next)
56
+ return orcid_users if last_page?(response[:links])
57
+ end
58
+ end
59
+
60
+ # @param [string] sunet to fetch
61
+ # @return [<OrcidUser>, nil] orcid user or nil if not found
62
+ def fetch_orcid_user(sunetid:)
63
+ result = get_response("/users/#{sunetid}", allow404: true)
64
+
65
+ return if result.nil?
66
+
67
+ OrcidUser.new(result[:sunet_id], result[:orcid_id], result[:scope], result[:access_token], result[:last_updated])
68
+ end
69
+
70
+ private
71
+
72
+ def first_page(page_size)
73
+ path = "/users?scope=ANY"
74
+ path += "&page_size=#{page_size}" if page_size
75
+ path
76
+ end
77
+
78
+ def last_page?(links)
79
+ links[:self] == links[:last]
80
+ end
81
+
82
+ def get_response(path, allow404: false)
83
+ response = conn.get("/mais/orcid/v1#{path}")
84
+
85
+ return if allow404 && response.status == 404
86
+
87
+ raise "UIT MAIS ORCID User API returned #{response.status}" if response.status != 200
88
+
89
+ body = JSON.parse(response.body).with_indifferent_access
90
+ raise "UIT MAIS ORCID User API returned an error: #{response.body}" if body.key?(:error)
91
+
92
+ body
93
+ end
94
+
95
+ # @return [Faraday::Connection]
96
+ def conn
97
+ @conn ||= begin
98
+ conn = Faraday.new(url: base_url) do |faraday|
99
+ faraday.request :retry, max: 3,
100
+ interval: 0.5,
101
+ interval_randomness: 0.5,
102
+ backoff_factor: 2
103
+ end
104
+ conn.options.timeout = 500
105
+ conn.options.open_timeout = 10
106
+ conn.headers[:user_agent] = "stanford-library-sul-pub"
107
+ conn.headers[:authorization] = token
108
+ conn
109
+ end
110
+ end
111
+
112
+ def token
113
+ client = OAuth2::Client.new(client_id, client_secret, site: base_url,
114
+ token_url: "/api/oauth/token", authorize_url: "/api/oauth/authorize",
115
+ auth_scheme: :request_body)
116
+ token = client.client_credentials.get_token
117
+ "Bearer #{token.token}"
118
+ end
119
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path("lib", __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require "mais_orcid_client/version"
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "mais_orcid_client"
9
+ spec.version = MaisOrcidClient::VERSION
10
+ spec.authors = ["Peter Mangiafico", "Justin Littman"]
11
+ spec.email = ["pmangiafico@stanford.edu", "jlittman@stanford.edu"]
12
+
13
+ spec.summary = "Interface for interacting with the MAIS's ORCID API."
14
+ spec.description = "This provides API interaction with the MAIS's ORCID API"
15
+ spec.homepage = "https://github.com/sul-dlss/mais_orcid_client"
16
+ spec.required_ruby_version = ">= 3.2.0"
17
+
18
+ spec.metadata["homepage_uri"] = spec.homepage
19
+ spec.metadata["source_code_uri"] = "https://github.com/sul-dlss/mais_orcid_client"
20
+ spec.metadata["changelog_uri"] = "https://github.com/sul-dlss/mais_orcid_client/releases"
21
+ spec.metadata["rubygems_mfa_required"] = "true"
22
+
23
+ # Specify which files should be added to the gem when it is released.
24
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
+ spec.files = Dir.chdir(__dir__) do
26
+ `git ls-files -z`.split("\x0").reject do |f|
27
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
28
+ end
29
+ end
30
+ spec.bindir = "exe"
31
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
32
+ spec.require_paths = ["lib"]
33
+
34
+ spec.add_dependency "activesupport", ">= 4.2", "< 8"
35
+ spec.add_dependency "faraday"
36
+ spec.add_dependency "faraday-retry"
37
+ spec.add_dependency "oauth2"
38
+ spec.add_dependency "zeitwerk"
39
+
40
+ spec.add_development_dependency "rake", "~> 13.0"
41
+ spec.add_development_dependency "rspec", "~> 3.0"
42
+ spec.add_development_dependency "standard"
43
+ spec.add_development_dependency "rubocop-rspec"
44
+ spec.add_development_dependency "simplecov"
45
+ spec.add_development_dependency "webmock"
46
+ spec.add_development_dependency "vcr"
47
+ end
metadata ADDED
@@ -0,0 +1,234 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mais_orcid_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Peter Mangiafico
8
+ - Justin Littman
9
+ autorequire:
10
+ bindir: exe
11
+ cert_chain: []
12
+ date: 2023-07-07 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '4.2'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '8'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: '4.2'
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '8'
34
+ - !ruby/object:Gem::Dependency
35
+ name: faraday
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ type: :runtime
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: faraday-retry
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: oauth2
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ type: :runtime
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ - !ruby/object:Gem::Dependency
77
+ name: zeitwerk
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ - !ruby/object:Gem::Dependency
91
+ name: rake
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '13.0'
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '13.0'
104
+ - !ruby/object:Gem::Dependency
105
+ name: rspec
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.0'
118
+ - !ruby/object:Gem::Dependency
119
+ name: standard
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ - !ruby/object:Gem::Dependency
133
+ name: rubocop-rspec
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ type: :development
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ - !ruby/object:Gem::Dependency
147
+ name: simplecov
148
+ requirement: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ type: :development
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ - !ruby/object:Gem::Dependency
161
+ name: webmock
162
+ requirement: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: vcr
176
+ requirement: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ type: :development
182
+ prerelease: false
183
+ version_requirements: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ description: This provides API interaction with the MAIS's ORCID API
189
+ email:
190
+ - pmangiafico@stanford.edu
191
+ - jlittman@stanford.edu
192
+ executables: []
193
+ extensions: []
194
+ extra_rdoc_files: []
195
+ files:
196
+ - ".rspec"
197
+ - ".rubocop.yml"
198
+ - ".rubocop/custom.yml"
199
+ - ".standard.yml"
200
+ - Gemfile
201
+ - Gemfile.lock
202
+ - LICENSE
203
+ - README.md
204
+ - Rakefile
205
+ - lib/mais_orcid_client.rb
206
+ - lib/mais_orcid_client/version.rb
207
+ - mais_orcid_client.gemspec
208
+ homepage: https://github.com/sul-dlss/mais_orcid_client
209
+ licenses: []
210
+ metadata:
211
+ homepage_uri: https://github.com/sul-dlss/mais_orcid_client
212
+ source_code_uri: https://github.com/sul-dlss/mais_orcid_client
213
+ changelog_uri: https://github.com/sul-dlss/mais_orcid_client/releases
214
+ rubygems_mfa_required: 'true'
215
+ post_install_message:
216
+ rdoc_options: []
217
+ require_paths:
218
+ - lib
219
+ required_ruby_version: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: 3.2.0
224
+ required_rubygems_version: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ version: '0'
229
+ requirements: []
230
+ rubygems_version: 3.4.14
231
+ signing_key:
232
+ specification_version: 4
233
+ summary: Interface for interacting with the MAIS's ORCID API.
234
+ test_files: []