Sha256: f453a8ec16e95c7b2631526ca35d8e12d6e9216ba7dc2433f58b729b6e34be93

Contents?: true

Size: 1.88 KB

Versions: 27

Compression:

Stored size: 1.88 KB

Contents

class WorkflowRESTClient

  def workflow_description
    WorkflowRESTClient.get_raw(File.join(url, 'description'))
  end

  def documentation
    @documention ||= IndiferentHash.setup(WorkflowRESTClient.get_json(File.join(url, "documentation"),{}))
  end

  def task_info(task)
    @task_info ||= {}
    @task_info[task]
    
    if @task_info[task].nil?
      task_info = WorkflowRESTClient.get_json(File.join(url, task.to_s, 'info'))
      task_info = WorkflowRESTClient.fix_hash(task_info)

      task_info[:result_type] = task_info[:result_type].to_sym
      task_info[:export] = task_info[:export].to_sym
      task_info[:input_types] = WorkflowRESTClient.fix_hash(task_info[:input_types], true)
      task_info[:inputs] = task_info[:inputs].collect{|input| input.to_sym }

      @task_info[task] = task_info
    end
    @task_info[task]
  end

  def exported_tasks
    (@asynchronous_exports  + @synchronous_exports + @exec_exports).compact.flatten
  end

  def tasks
    @tasks ||= Hash.new do |hash,task_name| 
      info = task_info(task_name)
      task = Task.setup info do |*args|
        raise "This is a remote task" 
      end
      task.name = task_name.to_sym
      hash[task_name] = task
    end
  end

  def load_tasks
    exported_tasks.each{|name| tasks[name]}
    nil
  end

  def task_dependencies
    @task_dependencies ||= Hash.new do |hash,task| 
      hash[task] = if exported_tasks.include? task
        WorkflowRESTClient.get_json(File.join(url, task.to_s, 'dependencies'))
      else
        []
      end
    end
  end

  def init_remote_tasks
    task_exports = WorkflowRESTClient.get_json(url)
    @asynchronous_exports = task_exports["asynchronous"].collect{|task| task.to_sym }
    @synchronous_exports = task_exports["synchronous"].collect{|task| task.to_sym }
    @exec_exports = task_exports["exec"].collect{|task| task.to_sym }
    @can_stream = task_exports["can_stream"]
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
rbbt-util-5.20.26 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.25 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.24 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.23 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.22 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.21 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.20 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.18 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.17 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.16 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.15 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.14 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.13 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.12 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.11 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.10 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.9 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.8 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.7 lib/rbbt/rest/client/adaptor.rb
rbbt-util-5.20.6 lib/rbbt/rest/client/adaptor.rb