globus_client 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +7 -7
- data/README.md +4 -0
- data/api_test.rb +3 -0
- data/lib/globus_client/endpoint.rb +21 -0
- data/lib/globus_client/version.rb +1 -1
- data/lib/globus_client.rb +6 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48a7e0a937ea5e51b5803b69237c2d03afdc95a14a26008b6df31b708b086600
|
4
|
+
data.tar.gz: 431c01307b660f6cab3240963e508f57d1d1a8412e75b3468b7c16a48fc220c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccb73a4b9709b88f4bcf2bfcd59775beeee645c3b79b7c9a1083cb922ea4cb014ed07141579bf92532be103eb79bf23b7a65b727f0343b8f4ecec9f294fdfd05
|
7
|
+
data.tar.gz: 4aa6ff81e7ac5109526ca7608c089e2b5a1f8f7ce4e4f9a8c4eabaf14805dc22d4c0380624aef82179dee222ef1e7997fd7a485355e152a13fd81f1f64e20425
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
globus_client (0.
|
4
|
+
globus_client (0.6.0)
|
5
5
|
activesupport (>= 4.2, < 8)
|
6
6
|
faraday
|
7
7
|
zeitwerk
|
@@ -30,13 +30,13 @@ GEM
|
|
30
30
|
hashdiff (1.0.1)
|
31
31
|
i18n (1.12.0)
|
32
32
|
concurrent-ruby (~> 1.0)
|
33
|
-
json (2.6.
|
34
|
-
language_server-protocol (3.17.0.
|
33
|
+
json (2.6.3)
|
34
|
+
language_server-protocol (3.17.0.2)
|
35
35
|
minitest (5.16.3)
|
36
36
|
parallel (1.22.1)
|
37
37
|
parser (3.1.3.0)
|
38
38
|
ast (~> 2.4.1)
|
39
|
-
public_suffix (5.0.
|
39
|
+
public_suffix (5.0.1)
|
40
40
|
rainbow (3.1.1)
|
41
41
|
rake (13.0.6)
|
42
42
|
regexp_parser (2.6.1)
|
@@ -50,7 +50,7 @@ GEM
|
|
50
50
|
rspec-expectations (3.12.0)
|
51
51
|
diff-lcs (>= 1.2.0, < 2.0)
|
52
52
|
rspec-support (~> 3.12.0)
|
53
|
-
rspec-mocks (3.12.
|
53
|
+
rspec-mocks (3.12.1)
|
54
54
|
diff-lcs (>= 1.2.0, < 2.0)
|
55
55
|
rspec-support (~> 3.12.0)
|
56
56
|
rspec-support (3.12.0)
|
@@ -79,8 +79,8 @@ GEM
|
|
79
79
|
simplecov_json_formatter (~> 0.1)
|
80
80
|
simplecov-html (0.12.3)
|
81
81
|
simplecov_json_formatter (0.1.4)
|
82
|
-
standard (1.19.
|
83
|
-
language_server-protocol (
|
82
|
+
standard (1.19.1)
|
83
|
+
language_server-protocol (~> 3.17.0.2)
|
84
84
|
rubocop (= 1.39.0)
|
85
85
|
rubocop-performance (= 1.15.1)
|
86
86
|
tzinfo (2.0.5)
|
data/README.md
CHANGED
@@ -55,6 +55,10 @@ GlobusClient.configure(
|
|
55
55
|
def create_user_directory
|
56
56
|
GlobusClient.mkdir(user_id: 'mjgiarlo@stanford.edu', path: 'mjgiarlo/work1234/version1')
|
57
57
|
end
|
58
|
+
|
59
|
+
def lookup_dir_contents
|
60
|
+
GlobusClient.get_filenames(user_id: 'mjgiarlo@stanford.edu', path: 'mjgiarlo/work1234/version1')
|
61
|
+
end
|
58
62
|
# ...
|
59
63
|
```
|
60
64
|
|
data/api_test.rb
CHANGED
@@ -27,6 +27,8 @@ total_size = GlobusClient.total_size(user_id:, path:)
|
|
27
27
|
|
28
28
|
GlobusClient.disallow_writes(user_id:, path:)
|
29
29
|
|
30
|
+
files_list = GlobusClient.get_filenames(user_id:, path:)
|
31
|
+
|
30
32
|
# Not part of the public API but this allows us to test access changes
|
31
33
|
after_permissions = GlobusClient::Endpoint.new(GlobusClient.config, user_id:, path:).send(:access_rule)["permissions"]
|
32
34
|
|
@@ -34,4 +36,5 @@ puts "User #{user_id} exists: #{user_exists}"
|
|
34
36
|
puts "Initial directory permissions: #{before_permissions}"
|
35
37
|
puts "Number of files in directory: #{files_count}"
|
36
38
|
puts "Total size of files in directory: #{total_size}"
|
39
|
+
puts "List of files in directory: #{files_list}"
|
37
40
|
puts "Final directory permissions: #{after_permissions}"
|
@@ -56,6 +56,10 @@ class GlobusClient
|
|
56
56
|
access_request(permissions: "r")
|
57
57
|
end
|
58
58
|
|
59
|
+
def get_filenames
|
60
|
+
ls_path(full_path, [])
|
61
|
+
end
|
62
|
+
|
59
63
|
private
|
60
64
|
|
61
65
|
attr_reader :config, :path, :user_id
|
@@ -105,6 +109,23 @@ class GlobusClient
|
|
105
109
|
objects["DATA"].select { |object| object["DATA_TYPE"] == "file" }
|
106
110
|
end
|
107
111
|
|
112
|
+
# @param filepath [String] an absolute path to look up contents e.g. /uploads/example/work123/version1
|
113
|
+
# @param filenames [Array<String>] a list of filenames, with absolute filepaths
|
114
|
+
def ls_path(filepath, filenames)
|
115
|
+
# List files recursively at an endpoint https://docs.globus.org/api/transfer/file_operations/#list_directory_contents
|
116
|
+
response = connection.get("#{transfer_path}/ls?path=#{filepath}")
|
117
|
+
if response.success?
|
118
|
+
data = JSON.parse(response.body)["DATA"]
|
119
|
+
data.select { |object| object["type"] == "file" }.map { |file| file["name"] }
|
120
|
+
.each { |file| filenames << "#{filepath}#{file}" }
|
121
|
+
data.select { |object| object["type"] == "dir" }.map { |dir| dir["name"] }
|
122
|
+
.each { |dir| ls_path("#{filepath}#{dir}/", filenames) }
|
123
|
+
else
|
124
|
+
UnexpectedResponse.call(response)
|
125
|
+
end
|
126
|
+
filenames
|
127
|
+
end
|
128
|
+
|
108
129
|
def access_request(permissions:)
|
109
130
|
response = if access_rule_id
|
110
131
|
connection.put("#{access_path}/#{access_rule_id}") do |req|
|
data/lib/globus_client.rb
CHANGED
@@ -32,7 +32,7 @@ class GlobusClient
|
|
32
32
|
self
|
33
33
|
end
|
34
34
|
|
35
|
-
delegate :config, :disallow_writes, :file_count, :mkdir, :total_size, :user_exists?, to: :instance
|
35
|
+
delegate :config, :disallow_writes, :file_count, :mkdir, :total_size, :user_exists?, :get_filenames, to: :instance
|
36
36
|
|
37
37
|
def default_transfer_url
|
38
38
|
"https://transfer.api.globusonline.org"
|
@@ -66,6 +66,11 @@ class GlobusClient
|
|
66
66
|
endpoint.total_size
|
67
67
|
end
|
68
68
|
|
69
|
+
def get_filenames(...)
|
70
|
+
endpoint = Endpoint.new(config, ...)
|
71
|
+
endpoint.get_filenames
|
72
|
+
end
|
73
|
+
|
69
74
|
def user_exists?(...)
|
70
75
|
identity = Identity.new(config)
|
71
76
|
identity.exists?(...)
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: globus_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Collier
|
8
8
|
- Laura Wrubel
|
9
9
|
- Mike Giarlo
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-12-
|
13
|
+
date: 2022-12-14 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -179,7 +179,7 @@ metadata:
|
|
179
179
|
source_code_uri: https://github.com/sul-dlss/globus_client
|
180
180
|
changelog_uri: https://github.com/sul-dlss/globus_client/releases
|
181
181
|
rubygems_mfa_required: 'true'
|
182
|
-
post_install_message:
|
182
|
+
post_install_message:
|
183
183
|
rdoc_options: []
|
184
184
|
require_paths:
|
185
185
|
- lib
|
@@ -194,8 +194,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
194
|
- !ruby/object:Gem::Version
|
195
195
|
version: '0'
|
196
196
|
requirements: []
|
197
|
-
rubygems_version: 3.3.
|
198
|
-
signing_key:
|
197
|
+
rubygems_version: 3.3.3
|
198
|
+
signing_key:
|
199
199
|
specification_version: 4
|
200
200
|
summary: Interface for interacting with the Globus API.
|
201
201
|
test_files: []
|