aspera-cli 4.16.0 → 4.17.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.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +50 -19
  4. data/CONTRIBUTING.md +3 -1
  5. data/README.md +965 -793
  6. data/bin/asession +29 -21
  7. data/lib/aspera/{fasp/agent_alpha.rb → agent/alpha.rb} +26 -25
  8. data/lib/aspera/{fasp/agent_base.rb → agent/base.rb} +15 -12
  9. data/lib/aspera/{fasp/agent_connect.rb → agent/connect.rb} +13 -11
  10. data/lib/aspera/{fasp/agent_direct.rb → agent/direct.rb} +49 -53
  11. data/lib/aspera/{fasp/agent_httpgw.rb → agent/httpgw.rb} +20 -19
  12. data/lib/aspera/{fasp/agent_node.rb → agent/node.rb} +20 -33
  13. data/lib/aspera/{fasp/agent_trsdk.rb → agent/trsdk.rb} +11 -11
  14. data/lib/aspera/api/aoc.rb +586 -0
  15. data/lib/aspera/api/ats.rb +46 -0
  16. data/lib/aspera/api/cos_node.rb +95 -0
  17. data/lib/aspera/api/node.rb +344 -0
  18. data/lib/aspera/ascmd.rb +46 -10
  19. data/lib/aspera/{fasp → ascp}/installation.rb +5 -5
  20. data/lib/aspera/{fasp → ascp}/management.rb +3 -8
  21. data/lib/aspera/{fasp → ascp}/products.rb +1 -1
  22. data/lib/aspera/assert.rb +30 -30
  23. data/lib/aspera/cli/basic_auth_plugin.rb +11 -10
  24. data/lib/aspera/cli/extended_value.rb +1 -1
  25. data/lib/aspera/cli/formatter.rb +13 -13
  26. data/lib/aspera/cli/hints.rb +5 -5
  27. data/lib/aspera/cli/main.rb +35 -28
  28. data/lib/aspera/cli/manager.rb +25 -24
  29. data/lib/aspera/cli/plugin.rb +22 -15
  30. data/lib/aspera/cli/plugin_factory.rb +61 -0
  31. data/lib/aspera/cli/plugins/alee.rb +7 -7
  32. data/lib/aspera/cli/plugins/aoc.rb +83 -77
  33. data/lib/aspera/cli/plugins/ats.rb +32 -33
  34. data/lib/aspera/cli/plugins/bss.rb +3 -4
  35. data/lib/aspera/cli/plugins/config.rb +169 -186
  36. data/lib/aspera/cli/plugins/console.rb +8 -6
  37. data/lib/aspera/cli/plugins/cos.rb +19 -18
  38. data/lib/aspera/cli/plugins/faspex.rb +61 -54
  39. data/lib/aspera/cli/plugins/faspex5.rb +150 -103
  40. data/lib/aspera/cli/plugins/node.rb +68 -73
  41. data/lib/aspera/cli/plugins/orchestrator.rb +34 -44
  42. data/lib/aspera/cli/plugins/preview.rb +31 -31
  43. data/lib/aspera/cli/plugins/server.rb +31 -33
  44. data/lib/aspera/cli/plugins/shares.rb +13 -11
  45. data/lib/aspera/cli/sync_actions.rb +8 -8
  46. data/lib/aspera/cli/transfer_agent.rb +32 -19
  47. data/lib/aspera/cli/transfer_progress.rb +1 -1
  48. data/lib/aspera/cli/version.rb +1 -1
  49. data/lib/aspera/colors.rb +5 -0
  50. data/lib/aspera/command_line_builder.rb +14 -14
  51. data/lib/aspera/coverage.rb +1 -2
  52. data/lib/aspera/data_repository.rb +1 -1
  53. data/lib/aspera/environment.rb +2 -3
  54. data/lib/aspera/faspex_gw.rb +5 -6
  55. data/lib/aspera/faspex_postproc.rb +1 -1
  56. data/lib/aspera/id_generator.rb +2 -2
  57. data/lib/aspera/json_rpc.rb +5 -5
  58. data/lib/aspera/keychain/encrypted_hash.rb +6 -6
  59. data/lib/aspera/keychain/macos_security.rb +27 -22
  60. data/lib/aspera/log.rb +2 -2
  61. data/lib/aspera/nagios.rb +3 -3
  62. data/lib/aspera/node_simulator.rb +5 -6
  63. data/lib/aspera/oauth/base.rb +143 -0
  64. data/lib/aspera/oauth/factory.rb +124 -0
  65. data/lib/aspera/oauth/generic.rb +34 -0
  66. data/lib/aspera/oauth/jwt.rb +51 -0
  67. data/lib/aspera/oauth/url_json.rb +31 -0
  68. data/lib/aspera/oauth/web.rb +50 -0
  69. data/lib/aspera/oauth.rb +5 -331
  70. data/lib/aspera/open_application.rb +7 -7
  71. data/lib/aspera/persistency_action_once.rb +4 -4
  72. data/lib/aspera/persistency_folder.rb +2 -2
  73. data/lib/aspera/preview/generator.rb +5 -5
  74. data/lib/aspera/preview/terminal.rb +3 -2
  75. data/lib/aspera/preview/utils.rb +3 -3
  76. data/lib/aspera/proxy_auto_config.rb +4 -4
  77. data/lib/aspera/rest.rb +175 -144
  78. data/lib/aspera/rest_errors_aspera.rb +3 -3
  79. data/lib/aspera/resumer.rb +77 -0
  80. data/lib/aspera/ssh.rb +6 -1
  81. data/lib/aspera/{fasp → transfer}/error.rb +3 -3
  82. data/lib/aspera/{fasp → transfer}/error_info.rb +1 -1
  83. data/lib/aspera/{fasp → transfer}/faux_file.rb +1 -1
  84. data/lib/aspera/{fasp → transfer}/parameters.rb +58 -89
  85. data/lib/aspera/{fasp/transfer_spec.rb → transfer/spec.rb} +18 -16
  86. data/lib/aspera/{fasp/parameters.yaml → transfer/spec.yaml} +4 -99
  87. data/lib/aspera/{fasp → transfer}/sync.rb +32 -32
  88. data/lib/aspera/{fasp → transfer}/uri.rb +9 -8
  89. data/lib/aspera/web_server_simple.rb +11 -3
  90. data.tar.gz.sig +0 -0
  91. metadata +36 -63
  92. metadata.gz.sig +0 -0
  93. data/lib/aspera/aoc.rb +0 -601
  94. data/lib/aspera/ats_api.rb +0 -47
  95. data/lib/aspera/cos_node.rb +0 -94
  96. data/lib/aspera/fasp/resume_policy.rb +0 -79
  97. data/lib/aspera/node.rb +0 -339
@@ -3,7 +3,7 @@
3
3
  # cspell:words logdir bidi watchd cooloff asyncadmin
4
4
 
5
5
  require 'aspera/command_line_builder'
6
- require 'aspera/fasp/installation'
6
+ require 'aspera/ascp/installation'
7
7
  require 'aspera/log'
8
8
  require 'aspera/assert'
9
9
  require 'json'
@@ -12,7 +12,7 @@ require 'open3'
12
12
  require 'English'
13
13
 
14
14
  module Aspera
15
- module Fasp
15
+ module Transfer
16
16
  # builds command line arg for async
17
17
  module Sync
18
18
  # sync direction, default is push
@@ -40,7 +40,7 @@ module Aspera
40
40
  'private_key_paths' => { cli: { type: :opt_with_arg, switch: '--private-key-path'}, accepted_types: :array},
41
41
  'direction' => { cli: { type: :opt_with_arg}, accepted_types: :string},
42
42
  'checksum' => { cli: { type: :opt_with_arg}, accepted_types: :string},
43
- 'tags' => { cli: { type: :opt_with_arg, switch: '--tags64', convert: 'Aspera::Fasp::Parameters.convert_json64'},
43
+ 'tags' => { cli: { type: :opt_with_arg, switch: '--tags64', convert: 'Aspera::Transfer::Parameters.convert_json64'},
44
44
  accepted_types: :hash, ts: true},
45
45
  'tcp_port' => { cli: { type: :opt_with_arg}, accepted_types: :int, ts: :ssh_port},
46
46
  'rate_policy' => { cli: { type: :opt_with_arg}, accepted_types: :string},
@@ -48,7 +48,7 @@ module Aspera
48
48
  'cooloff' => { cli: { type: :opt_with_arg}, accepted_types: :int},
49
49
  'pending_max' => { cli: { type: :opt_with_arg}, accepted_types: :int},
50
50
  'scan_intensity' => { cli: { type: :opt_with_arg}, accepted_types: :string},
51
- 'cipher' => { cli: { type: :opt_with_arg, convert: 'Aspera::Fasp::Parameters.convert_remove_hyphen'}, accepted_types: :string, ts: true},
51
+ 'cipher' => { cli: { type: :opt_with_arg, convert: 'Aspera::Transfer::Parameters.convert_remove_hyphen'}, accepted_types: :string, ts: true},
52
52
  'transfer_threads' => { cli: { type: :opt_with_arg}, accepted_types: :int},
53
53
  'preserve_time' => { cli: { type: :opt_without_arg}, ts: :preserve_times},
54
54
  'preserve_access_time' => { cli: { type: :opt_without_arg}, ts: nil},
@@ -64,8 +64,8 @@ module Aspera
64
64
  'license' => { cli: { type: :envvar, variable: 'ASPERA_SCP_LICENSE'}}
65
65
  }.freeze
66
66
 
67
- Aspera::CommandLineBuilder.normalize_description(PARAMS_VX_INSTANCE)
68
- Aspera::CommandLineBuilder.normalize_description(PARAMS_VX_SESSION)
67
+ CommandLineBuilder.normalize_description(PARAMS_VX_INSTANCE)
68
+ CommandLineBuilder.normalize_description(PARAMS_VX_SESSION)
69
69
 
70
70
  PARAMS_VX_KEYS = %w[instance sessions].freeze
71
71
 
@@ -112,12 +112,12 @@ module Aspera
112
112
  remote.delete('port')
113
113
  remote.delete('fingerprint')
114
114
  # ignore cert for wss ?
115
- if false # @options[:check_ignore]&.call(remote['host'], remote['ws_port'])
116
- wss_cert_file = TempFileManager.instance.new_file_path_global('wss_cert')
117
- wss_url = "https://#{remote['host']}:#{remote['ws_port']}"
118
- File.write(wss_cert_file, Rest.remote_certificates(wss_url))
119
- certificates_to_use.push(wss_cert_file)
120
- end
115
+ # if @options[:check_ignore_cb]&.call(remote['host'], remote['ws_port'])
116
+ # wss_cert_file = TempFileManager.instance.new_file_path_global('wss_cert')
117
+ # wss_url = "https://#{remote['host']}:#{remote['ws_port']}"
118
+ # File.write(wss_cert_file, Rest.remote_certificate_chain(wss_url))
119
+ # certificates_to_use.push(wss_cert_file)
120
+ # end
121
121
  # set location for CA bundle to be the one of Ruby, see env var SSL_CERT_FILE / SSL_CERT_DIR
122
122
  # certificates_to_use.concat(@options[:trusted_certs]) if @options[:trusted_certs]
123
123
  else
@@ -125,7 +125,7 @@ module Aspera
125
125
  remote.delete('ws_port')
126
126
  # add SSH bypass keys when authentication is token and no auth is provided
127
127
  if remote.key?('token') && !remote.key?('pass')
128
- certificates_to_use.concat(Installation.instance.aspera_token_ssh_key_paths)
128
+ certificates_to_use.concat(Ascp::Installation.instance.aspera_token_ssh_key_paths)
129
129
  end
130
130
  end
131
131
  return certificates_to_use
@@ -134,7 +134,7 @@ module Aspera
134
134
  # @param sync_params [Hash] sync parameters, old or new format
135
135
  # @param block [nil, Proc] block to generate transfer spec, takes: direction (one of DIRECTIONS), local_dir, remote_dir
136
136
  def start(sync_params, &block)
137
- assert_type(sync_params, Hash)
137
+ Aspera.assert_type(sync_params, Hash)
138
138
  env_args = {
139
139
  args: [],
140
140
  env: {}
@@ -142,12 +142,12 @@ module Aspera
142
142
  if sync_params.key?('local')
143
143
  remote = sync_params['remote']
144
144
  # async native JSON format (v2)
145
- assert_type(remote, Hash)
145
+ Aspera.assert_type(remote, Hash)
146
146
  # get transfer spec if possible, and feed back to new structure
147
147
  if block
148
148
  transfer_spec = yield((sync_params['direction'] || 'push').to_sym, sync_params['local']['path'], remote['path'])
149
149
  # async native JSON format
150
- assert_type(sync_params['local'], Hash)
150
+ Aspera.assert_type(sync_params['local'], Hash)
151
151
  # translate transfer spec to async parameters
152
152
  TS_TO_PARAMS_V2.each do |ts_param, sy_path|
153
153
  next unless transfer_spec.key?(ts_param)
@@ -165,7 +165,7 @@ module Aspera
165
165
  remote['private_key_paths'] ||= []
166
166
  remote['private_key_paths'].concat(add_certificates)
167
167
  end
168
- assert_type(sync_params, Hash)
168
+ Aspera.assert_type(sync_params, Hash)
169
169
  env_args[:args] = ["--conf64=#{Base64.strict_encode64(JSON.generate(sync_params))}"]
170
170
  elsif sync_params.key?('sessions')
171
171
  # ascli JSON format (v1)
@@ -178,25 +178,25 @@ module Aspera
178
178
  session[async_param] ||= transfer_spec[tspec_param] if transfer_spec.key?(tspec_param)
179
179
  end
180
180
  end
181
- session['private_key_paths'] = Fasp::Installation.instance.aspera_token_ssh_key_paths if transfer_spec.key?('token')
181
+ session['private_key_paths'] = Ascp::Installation.instance.aspera_token_ssh_key_paths if transfer_spec.key?('token')
182
182
  update_remote_dir(session, 'remote_dir', transfer_spec)
183
183
  end
184
184
  end
185
185
  raise StandardError, "Only 'sessions', and optionally 'instance' keys are allowed" unless
186
186
  sync_params.keys.push('instance').uniq.sort.eql?(PARAMS_VX_KEYS)
187
- assert_type(sync_params['sessions'], Array)
188
- assert_type(sync_params['sessions'].first, Hash)
187
+ Aspera.assert_type(sync_params['sessions'], Array)
188
+ Aspera.assert_type(sync_params['sessions'].first, Hash)
189
189
  if sync_params.key?('instance')
190
- assert_type(sync_params['instance'], Hash)
191
- instance_builder = Aspera::CommandLineBuilder.new(sync_params['instance'], PARAMS_VX_INSTANCE)
190
+ Aspera.assert_type(sync_params['instance'], Hash)
191
+ instance_builder = CommandLineBuilder.new(sync_params['instance'], PARAMS_VX_INSTANCE)
192
192
  instance_builder.process_params
193
193
  instance_builder.add_env_args(env_args)
194
194
  end
195
195
 
196
196
  sync_params['sessions'].each do |session_params|
197
- assert_type(session_params, Hash)
198
- assert(session_params.key?('name')){'session must contain at least name'}
199
- session_builder = Aspera::CommandLineBuilder.new(session_params, PARAMS_VX_SESSION)
197
+ Aspera.assert_type(session_params, Hash)
198
+ Aspera.assert(session_params.key?('name')){'session must contain at least name'}
199
+ session_builder = CommandLineBuilder.new(session_params, PARAMS_VX_SESSION)
200
200
  session_builder.process_params
201
201
  session_builder.add_env_args(env_args)
202
202
  end
@@ -211,7 +211,7 @@ module Aspera
211
211
  when true then return nil
212
212
  when false then raise "failed: #{$CHILD_STATUS}"
213
213
  when nil then raise "not started: #{$CHILD_STATUS}"
214
- else error_unexpected_value(res)
214
+ else Aspera.error_unexpected_value(res)
215
215
  end
216
216
  end
217
217
 
@@ -235,8 +235,8 @@ module Aspera
235
235
  def admin_status(sync_params, session_name)
236
236
  command_line = [ASYNC_ADMIN_EXECUTABLE, '--quiet']
237
237
  if sync_params.key?('local')
238
- assert(!sync_params['name'].nil?){'Missing session name'}
239
- assert(session_name.nil? || session_name.eql?(sync_params['name'])){'Session not found'}
238
+ Aspera.assert(!sync_params['name'].nil?){'Missing session name'}
239
+ Aspera.assert(session_name.nil? || session_name.eql?(sync_params['name'])){'Session not found'}
240
240
  command_line.push("--name=#{sync_params['name']}")
241
241
  if sync_params.key?('local_db_dir')
242
242
  command_line.push("--local-db-dir=#{sync_params['local_db_dir']}")
@@ -267,7 +267,7 @@ module Aspera
267
267
  raise "Sync failed: #{status.exitstatus} : #{stderr}" unless status.success?
268
268
  return parse_status(stdout)
269
269
  end
270
- end # end self
271
- end # end Sync
272
- end # end Fasp
273
- end # end Aspera
270
+ end
271
+ end
272
+ end
273
+ end
@@ -7,22 +7,23 @@ require 'aspera/rest'
7
7
  require 'aspera/command_line_builder'
8
8
 
9
9
  module Aspera
10
- module Fasp
10
+ module Transfer
11
11
  # translates a "faspe:" URI (used in Faspex 4) into transfer spec (Hash)
12
12
  class Uri
13
13
  SCHEME = 'faspe'
14
14
  def initialize(fasp_link)
15
15
  @fasp_uri = URI.parse(fasp_link.gsub(' ', '%20'))
16
- # TODO: check scheme is 'faspe'
16
+ Aspera.assert(@fasp_uri.scheme == SCHEME, "Invalid scheme: #{@fasp_uri.scheme}")
17
17
  end
18
18
 
19
+ # Generate transfer spec from provided faspe: URL
19
20
  def transfer_spec
20
21
  result_ts = {}
21
22
  result_ts['remote_host'] = @fasp_uri.host
22
23
  result_ts['remote_user'] = @fasp_uri.user
23
24
  result_ts['ssh_port'] = @fasp_uri.port
24
25
  result_ts['paths'] = [{'source' => URI.decode_www_form_component(@fasp_uri.path)}]
25
- # faspex does not encode trailing base64 padding, fix that to be able to decode properly
26
+ # faspex 4 does not encode trailing base64 padding, fix that to be able to decode properly
26
27
  fixed_query = @fasp_uri.query.gsub(/(=+)$/){|x|'%3D' * x.length}
27
28
 
28
29
  Rest.decode_query(fixed_query).each do |name, value|
@@ -36,20 +37,20 @@ module Aspera
36
37
  when 'minrate' then result_ts['min_rate_kbps'] = value.to_i
37
38
  when 'port' then result_ts['fasp_port'] = value.to_i
38
39
  when 'bwcap' then result_ts['target_rate_cap_kbps'] = value.to_i
39
- when 'enc' then result_ts['cipher'] = value.gsub(/^aes/, 'aes-').gsub(/cfb$/, '-cfb').gsub(/gcm$/, '-gcm').gsub(/--/, '-')
40
+ when 'enc' then result_ts['cipher'] = value.gsub(/^aes/, 'aes-').gsub(/cfb$/, '-cfb').gsub(/gcm$/, '-gcm').gsub('--', '-')
40
41
  when 'tags64' then result_ts['tags'] = JSON.parse(Base64.strict_decode64(value))
41
42
  when 'createpath' then result_ts['create_dir'] = CommandLineBuilder.yes_to_true(value)
42
43
  when 'fallback' then result_ts['http_fallback'] = CommandLineBuilder.yes_to_true(value)
43
44
  when 'lockpolicy' then result_ts['lock_rate_policy'] = CommandLineBuilder.yes_to_true(value)
44
45
  when 'lockminrate' then result_ts['lock_min_rate'] = CommandLineBuilder.yes_to_true(value)
45
46
  when 'auth' then Log.log.debug{"ignoring #{name}=#{value}"} # Not used (yes/no)
46
- when 'v' then Log.log.debug{"ignoring #{name}=#{value}"} # rubocop:disable Lint/DuplicateBranch Not used (2)
47
+ when 'v' then Log.log.debug{"ignoring #{name}=#{value}"} # rubocop:disable Lint/DuplicateBranch Not used (shall be 2)
47
48
  when 'protect' then Log.log.debug{"ignoring #{name}=#{value}"} # rubocop:disable Lint/DuplicateBranch TODO: what is this ?
48
49
  else Log.log.warn{"URI parameter ignored: #{name} = #{value}"}
49
50
  end
50
51
  end
51
52
  return result_ts
52
53
  end
53
- end # Uri
54
- end # Fasp
55
- end # Aspera
54
+ end
55
+ end
56
+ end
@@ -38,6 +38,7 @@ module Aspera
38
38
 
39
39
  # @param uri [URI]
40
40
  def initialize(uri, certificate: nil)
41
+ @url = uri
41
42
  # see https://www.rubydoc.info/stdlib/webrick/WEBrick/Config
42
43
  webrick_options = {
43
44
  BindAddress: uri.host,
@@ -53,7 +54,7 @@ module Aspera
53
54
  if certificate.nil?
54
55
  webrick_options[:SSLCertName] = [['CN', WEBrick::Utils.getservername]]
55
56
  else
56
- assert_type(certificate, Hash)
57
+ Aspera.assert_type(certificate, Hash)
57
58
  certificate = certificate.symbolize_keys
58
59
  raise "unexpected key in certificate config: only: #{CERT_PARAMETERS.join(', ')}" if certificate.keys.any?{|k|!CERT_PARAMETERS.include?(k)}
59
60
  webrick_options[:SSLPrivateKey] = if certificate.key?(:key)
@@ -72,10 +73,17 @@ module Aspera
72
73
  end
73
74
  end
74
75
  end
76
+ # call constructor of parent class, but capture STDERR
75
77
  # self signed certificate generates characters on STDERR, see create_self_signed_cert in webrick/ssl.rb
76
78
  Log.capture_stderr { super(webrick_options) }
77
- # kill -USR1 for graceful shutdown
78
- Kernel.trap('USR1') { shutdown }
79
+ end
80
+
81
+ # blocking
82
+ def start
83
+ Log.log.info{"Listening on #{@url}"}
84
+ # kill -HUP for graceful shutdown
85
+ Kernel.trap('HUP') { shutdown }
86
+ super
79
87
  end
80
88
 
81
89
  # log web server access ( option AccessLog )
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aspera-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.16.0
4
+ version: 4.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurent Martin
@@ -37,42 +37,8 @@ cert_chain:
37
37
  eTf9kxhVM40wGQOECVNA8UsEEZHD48eF+csUYZtAJOF5oxTI8UyV9T/o6CgO0c9/
38
38
  Gzz+Qm5ULOUcPiJLjSpaiTrkiIVYiDGnqNSr6R1Hb1c=
39
39
  -----END CERTIFICATE-----
40
- date: 2024-02-14 00:00:00.000000000 Z
40
+ date: 2024-05-13 00:00:00.000000000 Z
41
41
  dependencies:
42
- - !ruby/object:Gem::Dependency
43
- name: base64
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - "~>"
47
- - !ruby/object:Gem::Version
48
- version: 0.2.0
49
- type: :runtime
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
55
- version: 0.2.0
56
- - !ruby/object:Gem::Dependency
57
- name: bigdecimal
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: '3.1'
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- version: 3.1.6
66
- type: :runtime
67
- prerelease: false
68
- version_requirements: !ruby/object:Gem::Requirement
69
- requirements:
70
- - - "~>"
71
- - !ruby/object:Gem::Version
72
- version: '3.1'
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: 3.1.6
76
42
  - !ruby/object:Gem::Dependency
77
43
  name: blankslate
78
44
  requirement: !ruby/object:Gem::Requirement
@@ -219,14 +185,14 @@ dependencies:
219
185
  requirements:
220
186
  - - "~>"
221
187
  - !ruby/object:Gem::Version
222
- version: '1.8'
188
+ version: 3.0.2
223
189
  type: :runtime
224
190
  prerelease: false
225
191
  version_requirements: !ruby/object:Gem::Requirement
226
192
  requirements:
227
193
  - - "~>"
228
194
  - !ruby/object:Gem::Version
229
- version: '1.8'
195
+ version: 3.0.2
230
196
  - !ruby/object:Gem::Dependency
231
197
  name: tty-spinner
232
198
  requirement: !ruby/object:Gem::Requirement
@@ -401,14 +367,14 @@ dependencies:
401
367
  requirements:
402
368
  - - "~>"
403
369
  - !ruby/object:Gem::Version
404
- version: '0.50'
370
+ version: '0.48'
405
371
  type: :development
406
372
  prerelease: false
407
373
  version_requirements: !ruby/object:Gem::Requirement
408
374
  requirements:
409
375
  - - "~>"
410
376
  - !ruby/object:Gem::Version
411
- version: '0.50'
377
+ version: '0.48'
412
378
  description: Command line interface for IBM Aspera products
413
379
  email:
414
380
  - laurent.martin.aspera@fr.ibm.com
@@ -427,10 +393,22 @@ files:
427
393
  - examples/dascli
428
394
  - examples/proxy.pac
429
395
  - examples/rubyc
430
- - lib/aspera/aoc.rb
396
+ - lib/aspera/agent/alpha.rb
397
+ - lib/aspera/agent/base.rb
398
+ - lib/aspera/agent/connect.rb
399
+ - lib/aspera/agent/direct.rb
400
+ - lib/aspera/agent/httpgw.rb
401
+ - lib/aspera/agent/node.rb
402
+ - lib/aspera/agent/trsdk.rb
403
+ - lib/aspera/api/aoc.rb
404
+ - lib/aspera/api/ats.rb
405
+ - lib/aspera/api/cos_node.rb
406
+ - lib/aspera/api/node.rb
431
407
  - lib/aspera/ascmd.rb
408
+ - lib/aspera/ascp/installation.rb
409
+ - lib/aspera/ascp/management.rb
410
+ - lib/aspera/ascp/products.rb
432
411
  - lib/aspera/assert.rb
433
- - lib/aspera/ats_api.rb
434
412
  - lib/aspera/cli/basic_auth_plugin.rb
435
413
  - lib/aspera/cli/error.rb
436
414
  - lib/aspera/cli/extended_value.rb
@@ -440,6 +418,7 @@ files:
440
418
  - lib/aspera/cli/main.rb
441
419
  - lib/aspera/cli/manager.rb
442
420
  - lib/aspera/cli/plugin.rb
421
+ - lib/aspera/cli/plugin_factory.rb
443
422
  - lib/aspera/cli/plugins/alee.rb
444
423
  - lib/aspera/cli/plugins/aoc.rb
445
424
  - lib/aspera/cli/plugins/ats.rb
@@ -460,7 +439,6 @@ files:
460
439
  - lib/aspera/cli/version.rb
461
440
  - lib/aspera/colors.rb
462
441
  - lib/aspera/command_line_builder.rb
463
- - lib/aspera/cos_node.rb
464
442
  - lib/aspera/coverage.rb
465
443
  - lib/aspera/data/1
466
444
  - lib/aspera/data/2
@@ -470,25 +448,6 @@ files:
470
448
  - lib/aspera/data/6
471
449
  - lib/aspera/data_repository.rb
472
450
  - lib/aspera/environment.rb
473
- - lib/aspera/fasp/agent_alpha.rb
474
- - lib/aspera/fasp/agent_base.rb
475
- - lib/aspera/fasp/agent_connect.rb
476
- - lib/aspera/fasp/agent_direct.rb
477
- - lib/aspera/fasp/agent_httpgw.rb
478
- - lib/aspera/fasp/agent_node.rb
479
- - lib/aspera/fasp/agent_trsdk.rb
480
- - lib/aspera/fasp/error.rb
481
- - lib/aspera/fasp/error_info.rb
482
- - lib/aspera/fasp/faux_file.rb
483
- - lib/aspera/fasp/installation.rb
484
- - lib/aspera/fasp/management.rb
485
- - lib/aspera/fasp/parameters.rb
486
- - lib/aspera/fasp/parameters.yaml
487
- - lib/aspera/fasp/products.rb
488
- - lib/aspera/fasp/resume_policy.rb
489
- - lib/aspera/fasp/sync.rb
490
- - lib/aspera/fasp/transfer_spec.rb
491
- - lib/aspera/fasp/uri.rb
492
451
  - lib/aspera/faspex_gw.rb
493
452
  - lib/aspera/faspex_postproc.rb
494
453
  - lib/aspera/hash_ext.rb
@@ -499,9 +458,14 @@ files:
499
458
  - lib/aspera/line_logger.rb
500
459
  - lib/aspera/log.rb
501
460
  - lib/aspera/nagios.rb
502
- - lib/aspera/node.rb
503
461
  - lib/aspera/node_simulator.rb
504
462
  - lib/aspera/oauth.rb
463
+ - lib/aspera/oauth/base.rb
464
+ - lib/aspera/oauth/factory.rb
465
+ - lib/aspera/oauth/generic.rb
466
+ - lib/aspera/oauth/jwt.rb
467
+ - lib/aspera/oauth/url_json.rb
468
+ - lib/aspera/oauth/web.rb
505
469
  - lib/aspera/open_application.rb
506
470
  - lib/aspera/persistency_action_once.rb
507
471
  - lib/aspera/persistency_folder.rb
@@ -518,10 +482,19 @@ files:
518
482
  - lib/aspera/rest_call_error.rb
519
483
  - lib/aspera/rest_error_analyzer.rb
520
484
  - lib/aspera/rest_errors_aspera.rb
485
+ - lib/aspera/resumer.rb
521
486
  - lib/aspera/secret_hider.rb
522
487
  - lib/aspera/ssh.rb
523
488
  - lib/aspera/temp_file_manager.rb
524
489
  - lib/aspera/timer_limiter.rb
490
+ - lib/aspera/transfer/error.rb
491
+ - lib/aspera/transfer/error_info.rb
492
+ - lib/aspera/transfer/faux_file.rb
493
+ - lib/aspera/transfer/parameters.rb
494
+ - lib/aspera/transfer/spec.rb
495
+ - lib/aspera/transfer/spec.yaml
496
+ - lib/aspera/transfer/sync.rb
497
+ - lib/aspera/transfer/uri.rb
525
498
  - lib/aspera/uri_reader.rb
526
499
  - lib/aspera/web_auth.rb
527
500
  - lib/aspera/web_server_simple.rb
metadata.gz.sig CHANGED
Binary file