Class: Aspera::Agent::Base
- Inherits:
-
Object
- Object
- Aspera::Agent::Base
- Defined in:
- lib/aspera/agent/base.rb
Overview
Base class for transfer agents
Constant Summary collapse
- RUBY_EXT =
'.rb'
Class Method Summary collapse
-
.agent_list ⇒ Object
discover available agents.
-
.options(default:, options:) ⇒ Object
compute options from user provided and default options.
Instance Method Summary collapse
Class Method Details
.agent_list ⇒ Object
discover available agents
28 29 30 31 32 33 |
# File 'lib/aspera/agent/base.rb', line 28 def agent_list base_class = File.basename(__FILE__) Dir.entries(File.dirname(File.(__FILE__))).select do |file| file.end_with?(RUBY_EXT) && !file.eql?(base_class) end.map{|file|file[0..(-1 - RUBY_EXT.length)].to_sym} end |
.options(default:, options:) ⇒ Object
compute options from user provided and default options
12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/aspera/agent/base.rb', line 12 def (default:, options:) result = .symbolize_keys available = default.map{|k, v|"#{k}(#{v})"}.join(', ') result.each_key do |k| Aspera.assert_values(k, default.keys){"transfer agent parameter: #{k}"} # check it is the expected type: too limiting, as we can have an Integer or Float, or symbol and string # raise "Invalid value for transfer agent parameter: #{k}, expect #{default[k].class.name}" unless default[k].nil? || v.is_a?(default[k].class) end default.each do |k, v| raise "Missing required agent parameter: #{k}. Parameters: #{available}" if v.eql?(:required) && !result.key?(k) result[k] = v unless result.key?(k) end return result end |
Instance Method Details
#wait_for_completion ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/aspera/agent/base.rb', line 35 def wait_for_completion # list of: :success or "error message string" statuses = wait_for_transfers_completion @progress&.reset Aspera.assert_type(statuses, Array) Aspera.assert(statuses.none?{|i|!i.eql?(:success) && !i.is_a?(StandardError)}){"bad statuses content: #{statuses}"} return statuses end |