globus_client 0.5.0 → 0.6.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: 23d56c1a01cd643aafec353ff36adf2ad15b4792ebbd3091745415d5fcce68eb
4
- data.tar.gz: 0d6acdff1f5a627b6a9030bf1e5154c4efef845bab052c27d4d84206ee04c822
3
+ metadata.gz: 48a7e0a937ea5e51b5803b69237c2d03afdc95a14a26008b6df31b708b086600
4
+ data.tar.gz: 431c01307b660f6cab3240963e508f57d1d1a8412e75b3468b7c16a48fc220c6
5
5
  SHA512:
6
- metadata.gz: 6c6ea6b0df9c20fddb7157cd5c7a0dc3270308ce11805f1fbaebb35f704647e7bc4d097ab5a89edc68c1c87274d3adaa52abd6928d9c5d89a214eb99cf7193ac
7
- data.tar.gz: e25b26ab750b5b176279e26de6887bafc9fc25cce8b406d2aabec931978858580d26f816e9c2c6e92e3b7cca81afaf1cee6aa84490f88c152a65c2d35ee8c3ec
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.5.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.2)
34
- language_server-protocol (3.17.0.1)
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.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.0)
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.0)
83
- language_server-protocol (= 3.17.0.1)
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|
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class GlobusClient
4
- VERSION = "0.5.0"
4
+ VERSION = "0.6.0"
5
5
  end
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.5.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-09 00:00:00.000000000 Z
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.7
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: []