globus_client 0.14.0 → 0.15.0

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: bae9be2599dca47133561cc9f50d02118d633e973f973619bf642a890d266d7d
4
- data.tar.gz: 032a19fb8edf3b11740dd487415a98f14522daac3ae4966302376b902c787e01
3
+ metadata.gz: e189003b0a3f0592abd4fb7fabb006a3367f3cd330d83d7e46da2c2993bbbc21
4
+ data.tar.gz: 36c6ff9a70ddcfea7be6e1ca044b110adb536aa911adbb1626f5086737342d88
5
5
  SHA512:
6
- metadata.gz: f66705c5adbda9f69f8ab99b8c02ad8b16dafcf4760b0918f63191874066691c1c46211588a197629206f6e53f72b1893748bcac04594db44afeaa1f3a40706a
7
- data.tar.gz: f901d249a7b112efb537e88387aa6833759f2ec6f801277d4970a0830d7761abfe64e8a4163337ce252e2b9beb4e46410757832ecc300f649d8e21a5a6381669
6
+ metadata.gz: 02cd08266cd52d2a3dd86ded97c8ce0085832fb446223375ab69164ed087187611e184e7cb4555208a0fb30b477e6c8b0e212041073cce2a3c328ddf6412e0c3
7
+ data.tar.gz: 1d54da5c74f41e1a98ecdf0296ee948e14a9e569ed1f58a20f52c96347b1b215a4121050cef2e9c7f3d25d525a5b061e9cfe79cc8517efb1ff896cb517226962
data/.rubocop.yml CHANGED
@@ -23,5 +23,6 @@ Layout/LineLength:
23
23
 
24
24
  # Naming
25
25
  Naming/PredicateName:
26
- NamePrefix:
27
- - has
26
+ ForbiddenPrefixes:
27
+ - is_
28
+ - have_
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- globus_client (0.14.0)
5
- activesupport (>= 4.2, < 8)
4
+ globus_client (0.15.0)
5
+ activesupport (>= 4.2)
6
6
  faraday
7
7
  faraday-retry
8
8
  zeitwerk
@@ -10,108 +10,110 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- activesupport (7.1.0)
13
+ activesupport (8.0.1)
14
14
  base64
15
+ benchmark (>= 0.3)
15
16
  bigdecimal
16
- concurrent-ruby (~> 1.0, >= 1.0.2)
17
+ concurrent-ruby (~> 1.0, >= 1.3.1)
17
18
  connection_pool (>= 2.2.5)
18
19
  drb
19
20
  i18n (>= 1.6, < 2)
21
+ logger (>= 1.4.2)
20
22
  minitest (>= 5.1)
21
- mutex_m
22
- tzinfo (~> 2.0)
23
- addressable (2.8.5)
24
- public_suffix (>= 2.0.2, < 6.0)
23
+ securerandom (>= 0.3)
24
+ tzinfo (~> 2.0, >= 2.0.5)
25
+ uri (>= 0.13.1)
26
+ addressable (2.8.7)
27
+ public_suffix (>= 2.0.2, < 7.0)
25
28
  ast (2.4.2)
26
- base64 (0.1.1)
27
- bigdecimal (3.1.4)
29
+ base64 (0.2.0)
30
+ benchmark (0.4.0)
31
+ bigdecimal (3.1.9)
28
32
  byebug (11.1.3)
29
- concurrent-ruby (1.2.2)
30
- connection_pool (2.4.1)
31
- crack (0.4.5)
33
+ concurrent-ruby (1.3.5)
34
+ connection_pool (2.5.0)
35
+ crack (1.0.0)
36
+ bigdecimal
32
37
  rexml
33
- diff-lcs (1.5.0)
34
- docile (1.4.0)
35
- drb (2.1.1)
36
- ruby2_keywords
37
- faraday (2.7.11)
38
- base64
39
- faraday-net_http (>= 2.0, < 3.1)
40
- ruby2_keywords (>= 0.0.4)
41
- faraday-net_http (3.0.2)
42
- faraday-retry (2.2.0)
38
+ diff-lcs (1.5.1)
39
+ docile (1.4.1)
40
+ drb (2.2.1)
41
+ faraday (2.12.2)
42
+ faraday-net_http (>= 2.0, < 3.5)
43
+ json
44
+ logger
45
+ faraday-net_http (3.4.0)
46
+ net-http (>= 0.5.0)
47
+ faraday-retry (2.2.1)
43
48
  faraday (~> 2.0)
44
- hashdiff (1.0.1)
45
- i18n (1.14.1)
49
+ hashdiff (1.1.2)
50
+ i18n (1.14.7)
46
51
  concurrent-ruby (~> 1.0)
47
- json (2.6.3)
48
- language_server-protocol (3.17.0.3)
49
- minitest (5.20.0)
50
- mutex_m (0.1.2)
51
- parallel (1.23.0)
52
- parser (3.2.2.4)
52
+ json (2.9.1)
53
+ language_server-protocol (3.17.0.4)
54
+ logger (1.6.6)
55
+ minitest (5.25.4)
56
+ net-http (0.6.0)
57
+ uri
58
+ parallel (1.26.3)
59
+ parser (3.3.7.1)
53
60
  ast (~> 2.4.1)
54
61
  racc
55
- public_suffix (5.0.3)
56
- racc (1.7.1)
62
+ public_suffix (6.0.1)
63
+ racc (1.8.1)
57
64
  rainbow (3.1.1)
58
- rake (13.0.6)
59
- regexp_parser (2.8.1)
60
- rexml (3.2.6)
61
- rspec (3.12.0)
62
- rspec-core (~> 3.12.0)
63
- rspec-expectations (~> 3.12.0)
64
- rspec-mocks (~> 3.12.0)
65
- rspec-core (3.12.2)
66
- rspec-support (~> 3.12.0)
67
- rspec-expectations (3.12.3)
65
+ rake (13.2.1)
66
+ regexp_parser (2.10.0)
67
+ rexml (3.4.0)
68
+ rspec (3.13.0)
69
+ rspec-core (~> 3.13.0)
70
+ rspec-expectations (~> 3.13.0)
71
+ rspec-mocks (~> 3.13.0)
72
+ rspec-core (3.13.3)
73
+ rspec-support (~> 3.13.0)
74
+ rspec-expectations (3.13.3)
68
75
  diff-lcs (>= 1.2.0, < 2.0)
69
- rspec-support (~> 3.12.0)
70
- rspec-mocks (3.12.6)
76
+ rspec-support (~> 3.13.0)
77
+ rspec-mocks (3.13.2)
71
78
  diff-lcs (>= 1.2.0, < 2.0)
72
- rspec-support (~> 3.12.0)
73
- rspec-support (3.12.1)
74
- rubocop (1.56.4)
75
- base64 (~> 0.1.1)
79
+ rspec-support (~> 3.13.0)
80
+ rspec-support (3.13.2)
81
+ rubocop (1.71.2)
76
82
  json (~> 2.3)
77
83
  language_server-protocol (>= 3.17.0)
78
84
  parallel (~> 1.10)
79
- parser (>= 3.2.2.3)
85
+ parser (>= 3.3.0.2)
80
86
  rainbow (>= 2.2.2, < 4.0)
81
- regexp_parser (>= 1.8, < 3.0)
82
- rexml (>= 3.2.5, < 4.0)
83
- rubocop-ast (>= 1.28.1, < 2.0)
87
+ regexp_parser (>= 2.9.3, < 3.0)
88
+ rubocop-ast (>= 1.38.0, < 2.0)
84
89
  ruby-progressbar (~> 1.7)
85
- unicode-display_width (>= 2.4.0, < 3.0)
86
- rubocop-ast (1.29.0)
87
- parser (>= 3.2.1.0)
88
- rubocop-capybara (2.19.0)
89
- rubocop (~> 1.41)
90
- rubocop-factory_bot (2.24.0)
91
- rubocop (~> 1.33)
92
- rubocop-performance (1.19.1)
93
- rubocop (>= 1.7.0, < 2.0)
94
- rubocop-ast (>= 0.4.0)
95
- rubocop-rspec (2.24.1)
96
- rubocop (~> 1.33)
97
- rubocop-capybara (~> 2.17)
98
- rubocop-factory_bot (~> 2.22)
90
+ unicode-display_width (>= 2.4.0, < 4.0)
91
+ rubocop-ast (1.38.0)
92
+ parser (>= 3.3.1.0)
93
+ rubocop-performance (1.23.1)
94
+ rubocop (>= 1.48.1, < 2.0)
95
+ rubocop-ast (>= 1.31.1, < 2.0)
96
+ rubocop-rspec (3.4.0)
97
+ rubocop (~> 1.61)
99
98
  ruby-progressbar (1.13.0)
100
- ruby2_keywords (0.0.5)
99
+ securerandom (0.4.1)
101
100
  simplecov (0.22.0)
102
101
  docile (~> 1.1)
103
102
  simplecov-html (~> 0.11)
104
103
  simplecov_json_formatter (~> 0.1)
105
- simplecov-html (0.12.3)
104
+ simplecov-html (0.13.1)
106
105
  simplecov_json_formatter (0.1.4)
107
106
  tzinfo (2.0.6)
108
107
  concurrent-ruby (~> 1.0)
109
- unicode-display_width (2.5.0)
110
- webmock (3.19.1)
108
+ unicode-display_width (3.1.4)
109
+ unicode-emoji (~> 4.0, >= 4.0.4)
110
+ unicode-emoji (4.0.4)
111
+ uri (1.0.2)
112
+ webmock (3.25.0)
111
113
  addressable (>= 2.8.0)
112
114
  crack (>= 0.3.2)
113
115
  hashdiff (>= 0.4.0, < 2.0.0)
114
- zeitwerk (2.6.12)
116
+ zeitwerk (2.7.1)
115
117
 
116
118
  PLATFORMS
117
119
  x86_64-darwin-19
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/globus_client.svg)](https://badge.fury.io/rb/globus_client)
2
2
  [![CircleCI](https://circleci.com/gh/sul-dlss/globus_client.svg?style=svg)](https://circleci.com/gh/sul-dlss/globus_client)
3
- [![Code Climate](https://codeclimate.com/github/sul-dlss/globus_client/badges/gpa.svg)](https://codeclimate.com/github/sul-dlss/globus_client)
4
- [![Code Climate Test Coverage](https://api.codeclimate.com/v1/badges/8e6bf1a5d3fc86a6fbd0/test_coverage)](https://codeclimate.com/github/sul-dlss/globus_client/test_coverage)
3
+ [![codecov](https://codecov.io/github/sul-dlss/globus_client/graph/badge.svg?token=ARR042OHR8)](https://codecov.io/github/sul-dlss/globus_client)
5
4
 
6
5
  # GlobusClient
7
6
 
data/api_test.rb CHANGED
@@ -27,8 +27,7 @@ Benchmark.bm(20) do |benchmark| # rubocop:disable Metrics/BlockLength
27
27
 
28
28
  benchmark.report('before_perms:') do
29
29
  # Not part of the public API but this allows us to test access changes
30
- @before_permissions = GlobusClient::Endpoint.new(GlobusClient.instance, user_id:,
31
- path:).send(:access_rule)['permissions']
30
+ @before_permissions = GlobusClient::Endpoint.new(user_id:, path:).send(:access_rule)['permissions']
32
31
  end
33
32
 
34
33
  benchmark.report('has_files?:') do
@@ -49,8 +48,7 @@ Benchmark.bm(20) do |benchmark| # rubocop:disable Metrics/BlockLength
49
48
 
50
49
  benchmark.report('after_perms:') do
51
50
  # Not part of the public API but this allows us to test access changes
52
- @after_permissions = GlobusClient::Endpoint.new(GlobusClient.instance, user_id:,
53
- path:).send(:access_rule)['permissions']
51
+ @after_permissions = GlobusClient::Endpoint.new(user_id:, path:).send(:access_rule)['permissions']
54
52
  end
55
53
 
56
54
  puts "User #{user_id} exists: #{@user_exists}"
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
- spec.add_dependency 'activesupport', '>= 4.2', '< 8'
34
+ spec.add_dependency 'activesupport', '>= 4.2'
35
35
  spec.add_dependency 'faraday'
36
36
  spec.add_dependency 'faraday-retry'
37
37
  spec.add_dependency 'zeitwerk'
@@ -3,14 +3,8 @@
3
3
  class GlobusClient
4
4
  # The namespace for the "login" command
5
5
  class Authenticator
6
- def self.token(client_id, client_secret, auth_url)
7
- new(client_id, client_secret, auth_url).token
8
- end
9
-
10
- def initialize(client_id, client_secret, auth_url)
11
- @client_id = client_id
12
- @client_secret = client_secret
13
- @auth_url = auth_url
6
+ def self.token
7
+ new.token
14
8
  end
15
9
 
16
10
  # Request an access_token
@@ -24,16 +18,14 @@ class GlobusClient
24
18
 
25
19
  private
26
20
 
27
- attr_reader :client_id, :client_secret, :auth_url
28
-
29
21
  def connection
30
- Faraday.new(url: auth_url)
22
+ Faraday.new(url: GlobusClient.config.auth_url)
31
23
  end
32
24
 
33
25
  def form_data
34
26
  {
35
- client_id:,
36
- client_secret:,
27
+ client_id: GlobusClient.config.client_id,
28
+ client_secret: GlobusClient.config.client_secret,
37
29
  encoding: 'form',
38
30
  grant_type: 'client_credentials',
39
31
  scope: 'urn:globus:auth:scope:transfer.api.globus.org:all'
@@ -7,12 +7,10 @@ class GlobusClient
7
7
 
8
8
  FileInfo = Struct.new(:name, :size)
9
9
 
10
- # @param client [GlobusClient] a configured instance of the GlobusClient
11
10
  # @param path [String] the path to operate on
12
11
  # @param user_id [String] a Globus user ID (e.g., a @stanford.edu email address)
13
12
  # @param notify_email [Boolean] indicates if we should ask Globus to send emails on access change (default: true)
14
- def initialize(client, path:, user_id:, notify_email: true)
15
- @client = client
13
+ def initialize(path:, user_id:, notify_email: true)
16
14
  @user_id = user_id
17
15
  @path = path
18
16
  @notify_email = notify_email
@@ -32,8 +30,8 @@ class GlobusClient
32
30
  def mkdir
33
31
  # transfer API does not support recursive directory creation
34
32
  paths.each do |path|
35
- client.post(
36
- base_url: client.config.transfer_url,
33
+ GlobusClient.instance.post(
34
+ base_url: GlobusClient.config.transfer_url,
37
35
  path: "#{transfer_path}/mkdir",
38
36
  body: { DATA_TYPE: 'mkdir', path: },
39
37
  expected_response: lambda { |resp|
@@ -57,18 +55,18 @@ class GlobusClient
57
55
  def delete_access_rule
58
56
  raise(StandardError, "Access rule not found for #{path}") unless access_rule_id
59
57
 
60
- client.delete(
61
- base_url: client.config.transfer_url,
58
+ GlobusClient.instance.delete(
59
+ base_url: GlobusClient.config.transfer_url,
62
60
  path: "#{access_path}/#{access_rule_id}"
63
61
  )
64
62
  end
65
63
 
66
64
  private
67
65
 
68
- attr_reader :client, :path, :user_id, :notify_email
66
+ attr_reader :path, :user_id, :notify_email
69
67
 
70
68
  def globus_identity_id
71
- Identity.new(client).get_identity_id(user_id)
69
+ Identity.new.get_identity_id(user_id)
72
70
  end
73
71
 
74
72
  # Builds up a path from a list of path elements. E.g., input would look like:
@@ -78,7 +76,7 @@ class GlobusClient
78
76
  def paths
79
77
  @paths ||= path_segments.map.with_index do |_segment, index|
80
78
  File
81
- .join(client.config.uploads_directory, path_segments.slice(..index))
79
+ .join(GlobusClient.config.uploads_directory, path_segments.slice(..index))
82
80
  .concat(PATH_SEPARATOR)
83
81
  end
84
82
  end
@@ -99,8 +97,8 @@ class GlobusClient
99
97
  # @param files [Array<FileInfo>] an array of FileInfo structs, each of which has a name and a size
100
98
  # @param return_presence [Boolean] if true, return a boolean to indicate if any files at all are present, short-circuiting the recursive operation
101
99
  def ls_path(filepath, files, return_presence: false)
102
- response = client.get(
103
- base_url: client.config.transfer_url,
100
+ response = GlobusClient.instance.get(
101
+ base_url: GlobusClient.config.transfer_url,
104
102
  path: "#{transfer_path}/ls",
105
103
  params: { path: filepath }
106
104
  )
@@ -139,8 +137,8 @@ class GlobusClient
139
137
  permissions:
140
138
  }
141
139
  body[:notify_email] = user_id if notify_email
142
- client.post(
143
- base_url: client.config.transfer_url,
140
+ GlobusClient.instance.post(
141
+ base_url: GlobusClient.config.transfer_url,
144
142
  path: access_path,
145
143
  body:
146
144
  )
@@ -150,8 +148,8 @@ class GlobusClient
150
148
  def update_access_request(permissions:)
151
149
  raise(StandardError, "Access rule not found for #{path}") unless access_rule_id
152
150
 
153
- client.put(
154
- base_url: client.config.transfer_url,
151
+ GlobusClient.instance.put(
152
+ base_url: GlobusClient.config.transfer_url,
155
153
  path: "#{access_path}/#{access_rule_id}",
156
154
  body: {
157
155
  DATA_TYPE: 'access',
@@ -161,8 +159,8 @@ class GlobusClient
161
159
  end
162
160
 
163
161
  def access_rule
164
- response = client.get(
165
- base_url: client.config.transfer_url,
162
+ response = GlobusClient.instance.get(
163
+ base_url: GlobusClient.config.transfer_url,
166
164
  path: access_list_path,
167
165
  content_type: 'application/json'
168
166
  )
@@ -175,15 +173,15 @@ class GlobusClient
175
173
  end
176
174
 
177
175
  def transfer_path
178
- "/v0.10/operation/endpoint/#{client.config.transfer_endpoint_id}"
176
+ "/v0.10/operation/endpoint/#{GlobusClient.config.transfer_endpoint_id}"
179
177
  end
180
178
 
181
179
  def access_path
182
- "/v0.10/endpoint/#{client.config.transfer_endpoint_id}/access"
180
+ "/v0.10/endpoint/#{GlobusClient.config.transfer_endpoint_id}/access"
183
181
  end
184
182
 
185
183
  def access_list_path
186
- "/v0.10/endpoint/#{client.config.transfer_endpoint_id}/access_list"
184
+ "/v0.10/endpoint/#{GlobusClient.config.transfer_endpoint_id}/access_list"
187
185
  end
188
186
  end
189
187
  end
@@ -3,15 +3,11 @@
3
3
  class GlobusClient
4
4
  # Lookup of a Globus identity ID
5
5
  class Identity
6
- def initialize(client)
7
- @client = client
8
- end
9
-
10
6
  # @param user_id [String] the username in the form of an email addresss
11
7
  # @return [Hash] id and status of Globus identity
12
8
  def get_identity(user_id)
13
- response = client.get(
14
- base_url: client.config.auth_url,
9
+ response = GlobusClient.instance.get(
10
+ base_url: GlobusClient.config.auth_url,
15
11
  path: '/v2/api/identities',
16
12
  params: { usernames: user_id }
17
13
  )
@@ -30,9 +26,5 @@ class GlobusClient
30
26
  def get_identity_id(user_id)
31
27
  get_identity(user_id)['id']
32
28
  end
33
-
34
- private
35
-
36
- attr_reader :client
37
29
  end
38
30
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class GlobusClient
4
- VERSION = '0.14.0'
4
+ VERSION = '0.15.0'
5
5
  end
data/lib/globus_client.rb CHANGED
@@ -140,7 +140,7 @@ class GlobusClient # rubocop:disable Metrics/ClassLength
140
140
  end
141
141
 
142
142
  def mkdir(...)
143
- Endpoint.new(self, ...).tap do |endpoint|
143
+ Endpoint.new(...).tap do |endpoint|
144
144
  endpoint.mkdir
145
145
  endpoint.allow_writes
146
146
  end
@@ -148,13 +148,13 @@ class GlobusClient # rubocop:disable Metrics/ClassLength
148
148
 
149
149
  def disallow_writes(...)
150
150
  Endpoint
151
- .new(self, ...)
151
+ .new(...)
152
152
  .disallow_writes
153
153
  end
154
154
 
155
155
  def delete_access_rule(...)
156
156
  Endpoint
157
- .new(self, ...)
157
+ .new(...)
158
158
  .delete_access_rule
159
159
  end
160
160
 
@@ -163,37 +163,37 @@ class GlobusClient # rubocop:disable Metrics/ClassLength
163
163
  # `Endpoint#list_files`
164
164
  def list_files(**keywords, &)
165
165
  Endpoint
166
- .new(self, **keywords)
166
+ .new(**keywords)
167
167
  .list_files(&)
168
168
  end
169
169
 
170
170
  def file_count(...)
171
171
  Endpoint
172
- .new(self, ...)
172
+ .new(...)
173
173
  .list_files { |files| return files.count }
174
174
  end
175
175
 
176
176
  def total_size(...)
177
177
  Endpoint
178
- .new(self, ...)
178
+ .new(...)
179
179
  .list_files { |files| return files.sum(&:size) }
180
180
  end
181
181
 
182
182
  def get_filenames(...)
183
183
  Endpoint
184
- .new(self, ...)
184
+ .new(...)
185
185
  .list_files { |files| return files.map(&:name) }
186
186
  end
187
187
 
188
188
  def has_files?(...)
189
189
  Endpoint
190
- .new(self, ...)
190
+ .new(...)
191
191
  .has_files?
192
192
  end
193
193
 
194
194
  def user_valid?(...)
195
195
  Identity
196
- .new(self)
196
+ .new
197
197
  .valid?(...)
198
198
  end
199
199
 
@@ -230,7 +230,7 @@ class GlobusClient # rubocop:disable Metrics/ClassLength
230
230
 
231
231
  # if unauthorized, token has likely expired. try to get a new token and then retry the same request(s).
232
232
  if response.status == 401
233
- config.token = Authenticator.token(config.client_id, config.client_secret, config.auth_url)
233
+ config.token = Authenticator.token
234
234
  response = yield
235
235
  end
236
236
 
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: globus_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Collier
8
8
  - Laura Wrubel
9
9
  - Mike Giarlo
10
- autorequire:
11
10
  bindir: exe
12
11
  cert_chain: []
13
- date: 2023-10-11 00:00:00.000000000 Z
12
+ date: 2025-02-18 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: activesupport
@@ -19,9 +18,6 @@ dependencies:
19
18
  - - ">="
20
19
  - !ruby/object:Gem::Version
21
20
  version: '4.2'
22
- - - "<"
23
- - !ruby/object:Gem::Version
24
- version: '8'
25
21
  type: :runtime
26
22
  prerelease: false
27
23
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,9 +25,6 @@ dependencies:
29
25
  - - ">="
30
26
  - !ruby/object:Gem::Version
31
27
  version: '4.2'
32
- - - "<"
33
- - !ruby/object:Gem::Version
34
- version: '8'
35
28
  - !ruby/object:Gem::Dependency
36
29
  name: faraday
37
30
  requirement: !ruby/object:Gem::Requirement
@@ -106,7 +99,6 @@ metadata:
106
99
  source_code_uri: https://github.com/sul-dlss/globus_client
107
100
  changelog_uri: https://github.com/sul-dlss/globus_client/releases
108
101
  rubygems_mfa_required: 'true'
109
- post_install_message:
110
102
  rdoc_options: []
111
103
  require_paths:
112
104
  - lib
@@ -121,8 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
113
  - !ruby/object:Gem::Version
122
114
  version: '0'
123
115
  requirements: []
124
- rubygems_version: 3.4.13
125
- signing_key:
116
+ rubygems_version: 3.6.3
126
117
  specification_version: 4
127
118
  summary: Interface for interacting with the Globus API.
128
119
  test_files: []
OSZAR »