sul_orcid_client 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a962456d9d06f989b7fe1fa4a95922ee3bfab33234baa35f6192398380016dc1
4
- data.tar.gz: 7a2b53f1c0fc01c27748e6ec226f6ca271a2f356e78f3f5ac45fc9e920758fa3
3
+ metadata.gz: f1cb74cbce1d27862da0f058974e0ca4233e5e8cbcaa956ce5682be779206bb0
4
+ data.tar.gz: 71e80c4c62957681faf99df97cc843e34d83c3c450b1cb7471b2d39ad347adce
5
5
  SHA512:
6
- metadata.gz: 5d41466f03921824b3325bfec46018a0874bca2f01f8e7609171cbf90f0b077c428806b61483b66158699bafbf2ad2eb4afd1d24e5613bbbef7a477c011359a3
7
- data.tar.gz: 1fbe6359f523713b2c851c85e249e4b55b4436c4092b4f9b239059750fa6c83507385352d92b78c943c5d8117537904b928c864c13c5b83fef1b24ae150190e7
6
+ metadata.gz: '09f5190810198153c3f5a6726113f8d57cfa1942ead9a38aa43c392c5b42ec7f7403a228c35f4e04a79a0e18696916b066900f7faf33429abda23eeeeb8c955e'
7
+ data.tar.gz: 016d439926b46f5098a659fed9a90b1fe4f4fb699b8edee598861d4bdf04f3f791d2144785c642d4c4fa657213dcf87da5b49d867c986f451d5e23d7cca2b522
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sul_orcid_client (0.3.0)
4
+ sul_orcid_client (0.4.0)
5
5
  activesupport (>= 4.2, < 8)
6
6
  cocina-models (~> 0.90)
7
7
  faraday
@@ -12,40 +12,51 @@ PATH
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- activesupport (7.0.6)
15
+ activesupport (7.1.2)
16
+ base64
17
+ bigdecimal
16
18
  concurrent-ruby (~> 1.0, >= 1.0.2)
19
+ connection_pool (>= 2.2.5)
20
+ drb
17
21
  i18n (>= 1.6, < 2)
18
22
  minitest (>= 5.1)
23
+ mutex_m
19
24
  tzinfo (~> 2.0)
20
- addressable (2.8.4)
25
+ addressable (2.8.5)
21
26
  public_suffix (>= 2.0.2, < 6.0)
22
27
  ast (2.4.2)
23
28
  attr_extras (7.1.0)
29
+ base64 (0.2.0)
30
+ bigdecimal (3.1.4)
24
31
  byebug (11.1.3)
25
- cocina-models (0.90.0)
32
+ cocina-models (0.93.0)
26
33
  activesupport
27
34
  deprecation
28
35
  dry-struct (~> 1.0)
29
36
  dry-types (~> 1.1)
30
37
  edtf
31
38
  equivalent-xml
39
+ i18n
32
40
  jsonpath
33
41
  nokogiri
34
42
  openapi3_parser
35
- openapi_parser (>= 0.11.1, < 1.0)
43
+ openapi_parser (~> 1.0)
36
44
  rss
37
45
  super_diff
38
46
  thor
39
47
  zeitwerk (~> 2.1)
40
- commonmarker (0.23.9)
48
+ commonmarker (0.23.10)
41
49
  concurrent-ruby (1.2.2)
50
+ connection_pool (2.4.1)
42
51
  crack (0.4.5)
43
52
  rexml
44
53
  deprecation (1.1.0)
45
54
  activesupport
46
55
  diff-lcs (1.5.0)
47
56
  docile (1.4.0)
48
- dry-core (1.0.0)
57
+ drb (2.2.0)
58
+ ruby2_keywords
59
+ dry-core (1.0.1)
49
60
  concurrent-ruby (~> 1.0)
50
61
  zeitwerk (~> 2.6)
51
62
  dry-inflector (1.0.0)
@@ -68,7 +79,8 @@ GEM
68
79
  activesupport (>= 3.0, < 8.0)
69
80
  equivalent-xml (0.6.0)
70
81
  nokogiri (>= 1.4.3)
71
- faraday (2.7.10)
82
+ faraday (2.7.11)
83
+ base64
72
84
  faraday-net_http (>= 2.0, < 3.1)
73
85
  ruby2_keywords (>= 0.0.4)
74
86
  faraday-net_http (3.0.2)
@@ -80,17 +92,18 @@ GEM
80
92
  concurrent-ruby (~> 1.0)
81
93
  ice_nine (0.11.2)
82
94
  json (2.6.3)
83
- jsonpath (1.1.3)
95
+ jsonpath (1.1.5)
84
96
  multi_json
85
97
  jwt (2.7.1)
86
98
  language_server-protocol (3.17.0.3)
87
99
  lint_roller (1.1.0)
88
- minitest (5.18.1)
100
+ minitest (5.20.0)
89
101
  multi_json (1.15.0)
90
102
  multi_xml (0.6.0)
91
- nokogiri (1.15.3-x86_64-darwin)
103
+ mutex_m (0.2.0)
104
+ nokogiri (1.15.4-x86_64-darwin)
92
105
  racc (~> 1.4)
93
- nokogiri (1.15.3-x86_64-linux)
106
+ nokogiri (1.15.4-x86_64-linux)
94
107
  racc (~> 1.4)
95
108
  oauth2 (2.0.9)
96
109
  faraday (>= 0.17.3, < 3.0)
@@ -101,21 +114,21 @@ GEM
101
114
  version_gem (~> 1.1)
102
115
  openapi3_parser (0.9.2)
103
116
  commonmarker (~> 0.17)
104
- openapi_parser (0.15.0)
105
- optimist (3.0.1)
117
+ openapi_parser (1.0.0)
118
+ optimist (3.1.0)
106
119
  parallel (1.23.0)
107
- parser (3.2.2.3)
120
+ parser (3.2.2.4)
108
121
  ast (~> 2.4.1)
109
122
  racc
110
123
  patience_diff (1.2.0)
111
124
  optimist (~> 3.0)
112
125
  public_suffix (5.0.3)
113
- racc (1.7.1)
126
+ racc (1.7.3)
114
127
  rack (3.0.8)
115
128
  rainbow (3.1.1)
116
- rake (13.0.6)
117
- regexp_parser (2.8.1)
118
- rexml (3.2.5)
129
+ rake (13.1.0)
130
+ regexp_parser (2.8.2)
131
+ rexml (3.2.6)
119
132
  rspec (3.12.0)
120
133
  rspec-core (~> 3.12.0)
121
134
  rspec-expectations (~> 3.12.0)
@@ -129,29 +142,30 @@ GEM
129
142
  diff-lcs (>= 1.2.0, < 2.0)
130
143
  rspec-support (~> 3.12.0)
131
144
  rspec-support (3.12.1)
132
- rss (0.2.9)
145
+ rss (0.3.0)
133
146
  rexml
134
- rubocop (1.52.1)
147
+ rubocop (1.57.2)
135
148
  json (~> 2.3)
149
+ language_server-protocol (>= 3.17.0)
136
150
  parallel (~> 1.10)
137
- parser (>= 3.2.2.3)
151
+ parser (>= 3.2.2.4)
138
152
  rainbow (>= 2.2.2, < 4.0)
139
153
  regexp_parser (>= 1.8, < 3.0)
140
154
  rexml (>= 3.2.5, < 4.0)
141
- rubocop-ast (>= 1.28.0, < 2.0)
155
+ rubocop-ast (>= 1.28.1, < 2.0)
142
156
  ruby-progressbar (~> 1.7)
143
157
  unicode-display_width (>= 2.4.0, < 3.0)
144
- rubocop-ast (1.29.0)
158
+ rubocop-ast (1.30.0)
145
159
  parser (>= 3.2.1.0)
146
- rubocop-capybara (2.18.0)
160
+ rubocop-capybara (2.19.0)
147
161
  rubocop (~> 1.41)
148
- rubocop-factory_bot (2.23.1)
162
+ rubocop-factory_bot (2.24.0)
149
163
  rubocop (~> 1.33)
150
- rubocop-performance (1.18.0)
164
+ rubocop-performance (1.19.1)
151
165
  rubocop (>= 1.7.0, < 2.0)
152
166
  rubocop-ast (>= 0.4.0)
153
- rubocop-rspec (2.22.0)
154
- rubocop (~> 1.33)
167
+ rubocop-rspec (2.25.0)
168
+ rubocop (~> 1.40)
155
169
  rubocop-capybara (~> 2.17)
156
170
  rubocop-factory_bot (~> 2.22)
157
171
  ruby-progressbar (1.13.0)
@@ -165,35 +179,36 @@ GEM
165
179
  snaky_hash (2.0.1)
166
180
  hashie
167
181
  version_gem (~> 1.1, >= 1.1.1)
168
- standard (1.30.1)
182
+ standard (1.32.0)
169
183
  language_server-protocol (~> 3.17.0.2)
170
184
  lint_roller (~> 1.0)
171
- rubocop (~> 1.52.0)
185
+ rubocop (~> 1.57.2)
172
186
  standard-custom (~> 1.0.0)
173
- standard-performance (~> 1.1.0)
187
+ standard-performance (~> 1.2)
174
188
  standard-custom (1.0.2)
175
189
  lint_roller (~> 1.0)
176
190
  rubocop (~> 1.50)
177
- standard-performance (1.1.1)
191
+ standard-performance (1.2.1)
178
192
  lint_roller (~> 1.1)
179
- rubocop-performance (~> 1.18.0)
193
+ rubocop-performance (~> 1.19.1)
180
194
  super_diff (0.10.0)
181
195
  attr_extras (>= 6.2.4)
182
196
  diff-lcs
183
197
  patience_diff
184
- thor (1.2.2)
198
+ thor (1.3.0)
185
199
  tzinfo (2.0.6)
186
200
  concurrent-ruby (~> 1.0)
187
- unicode-display_width (2.4.2)
201
+ unicode-display_width (2.5.0)
188
202
  vcr (6.2.0)
189
203
  version_gem (1.1.3)
190
- webmock (3.18.1)
204
+ webmock (3.19.1)
191
205
  addressable (>= 2.8.0)
192
206
  crack (>= 0.3.2)
193
207
  hashdiff (>= 0.4.0, < 2.0.0)
194
- zeitwerk (2.6.8)
208
+ zeitwerk (2.6.12)
195
209
 
196
210
  PLATFORMS
211
+ x86_64-darwin-19
197
212
  x86_64-darwin-22
198
213
  x86_64-linux
199
214
 
data/README.md CHANGED
@@ -29,8 +29,8 @@ require "sul_orcid_client"
29
29
  client = SulOrcidClient.configure(
30
30
  client_id: Settings.orcid.client_id,
31
31
  client_secret: Settings.orcid.client_secret,
32
- base_url: Settings.orcid.base_url
33
- base_public_url: Settings.orcid.base_public_url
32
+ base_url: Settings.orcid.base_url,
33
+ base_public_url: Settings.orcid.base_public_url,
34
34
  base_auth_url: Settings.orcid.base_auth_url
35
35
  )
36
36
  client.fetch_works(orcidid: 'https://sandbox.orcid.org/0000-0002-7262-6251')
@@ -46,8 +46,8 @@ to be sure configuration has already occurred, e.g.:
46
46
  SulOrcidClient.configure(
47
47
  client_id: Settings.orcid.client_id,
48
48
  client_secret: Settings.orcid.client_secret,
49
- base_url: Settings.orcid.base_url
50
- base_public_url: Settings.orcid.base_public_url
49
+ base_url: Settings.orcid.base_url,
50
+ base_public_url: Settings.orcid.base_public_url,
51
51
  base_auth_url: Settings.orcid.base_auth_url
52
52
  )
53
53
 
@@ -1,5 +1,9 @@
1
1
  class SulOrcidClient
2
2
  # Helper methods for working with Orcid in Cocina
3
+ # NOTE: there is similar code in dor_indexing_app which fetches
4
+ # ORCIDs out of cocina. Consider consolidating at some point or keeping in sync.
5
+ # see https://github.com/sul-dlss/dor_indexing_app/blob/main/app/services/orcid_builder.rb
6
+ # and https://github.com/sul-dlss/dor_indexing_app/issues/1022
3
7
  class CocinaSupport
4
8
  # @param [Cocina::Models::Contributor] contributor to check
5
9
  # @return [Boolean] true unless the contributor has a citation status of false
@@ -13,7 +17,11 @@ class SulOrcidClient
13
17
  identifier = contributor.identifier.find { |identifier| identifier.type == "ORCID" }
14
18
  return unless identifier
15
19
 
16
- URI.join(identifier.source.uri, identifier.value).to_s
20
+ # some records have the full ORCID URI in the data, just return it if so, e.g. druid:gf852zt8324
21
+ return identifier.uri if identifier.uri
22
+ return identifier.value if identifier.value.start_with?("https://orcid.org/")
23
+
24
+ URI.join("https://orcid.org/", identifier.value).to_s
17
25
  end
18
26
 
19
27
  # @param [Cocina::Models::Description] description containing contributors to check
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class SulOrcidClient
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "active_support/core_ext/module/delegation"
4
- require "active_support/core_ext/hash/indifferent_access"
3
+ require "active_support"
4
+ require "active_support/core_ext"
5
5
 
6
6
  require "faraday"
7
7
  require "faraday/retry"
@@ -136,6 +136,8 @@ class SulOrcidClient
136
136
  work.merge({"put-code" => put_code}).to_json,
137
137
  "Content-Type" => "application/vnd.orcid+json")
138
138
 
139
+ raise "ORCID.org API returned #{response.status} when updating #{put_code} for #{orcidid}. The author may have previously deleted this work from their ORCID profile." if response.status == 404
140
+
139
141
  raise "ORCID.org API returned #{response.status} when updating #{put_code} for #{orcidid}" unless response.status == 200
140
142
  true
141
143
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sul_orcid_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Mangiafico
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-07-17 00:00:00.000000000 Z
12
+ date: 2023-11-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -244,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
244
244
  - !ruby/object:Gem::Version
245
245
  version: '0'
246
246
  requirements: []
247
- rubygems_version: 3.4.14
247
+ rubygems_version: 3.4.21
248
248
  signing_key:
249
249
  specification_version: 4
250
250
  summary: Interface for interacting with the ORCID API.