class OpenCPU::DelayedCalculation

Attributes

available_resources[RW]
location[RW]

Public Class Methods

new(location, resources = []) click to toggle source
# File lib/opencpu/delayed_calculation.rb, line 11
def initialize(location, resources = [])
  @location = location
  @available_resources = {}
  parse_resources(location, resources)
end

Public Instance Methods

console() click to toggle source
# File lib/opencpu/delayed_calculation.rb, line 43
def console
  raise ResponseNotAvailableError unless @available_resources.has_key?(:console)
  process_resource @available_resources[:console].to_s
end
graphics(which = 0, type = :svg) click to toggle source
# File lib/opencpu/delayed_calculation.rb, line 17
def graphics(which = 0, type = :svg)
  raise ResponseNotAvailableError unless @available_resources.has_key?(:graphics)
  raise UnsupportedFormatError unless [:png, :svg].include?(type)
  process_resource @available_resources[:graphics][which].to_s + "/#{type}"
end
info() click to toggle source
# File lib/opencpu/delayed_calculation.rb, line 48
def info
  raise ResponseNotAvailableError unless @available_resources.has_key?(:info)
  process_resource @available_resources[:info].to_s
end
source() click to toggle source
# File lib/opencpu/delayed_calculation.rb, line 38
def source
  raise ResponseNotAvailableError unless @available_resources.has_key?(:source)
  process_resource @available_resources[:source].to_s
end
stdout() click to toggle source
# File lib/opencpu/delayed_calculation.rb, line 28
def stdout
  raise ResponseNotAvailableError unless @available_resources.has_key?(:stdout)
  process_resource @available_resources[:stdout].to_s
end
value() click to toggle source
# File lib/opencpu/delayed_calculation.rb, line 23
def value
  raise ResponseNotAvailableError unless @available_resources.has_key?(:value)
  process_resource @available_resources[:value].to_s
end
warnings() click to toggle source
# File lib/opencpu/delayed_calculation.rb, line 33
def warnings
  raise ResponseNotAvailableError unless @available_resources.has_key?(:warnings)
  process_resource @available_resources[:warnings].to_s
end

Private Instance Methods

domain() click to toggle source
# File lib/opencpu/delayed_calculation.rb, line 75
def domain
  uri = URI.parse(@location)
  "#{uri.scheme}://#{uri.host}:#{uri.port}"
end
key(uri, location) click to toggle source
# File lib/opencpu/delayed_calculation.rb, line 80
def key(uri, location)
  key = uri.to_s.gsub(location, '')
  key = :value    if key == "R/.val"
  key = :graphics if key =~ /graphics\/\d/
  key.to_sym
end
parse_resources(location, resources) click to toggle source
# File lib/opencpu/delayed_calculation.rb, line 62
def parse_resources(location, resources)
  resources.each do |resource|
    uri = URI.join(domain, resource)
    key = key(uri, location)
    if key == :graphics
      @available_resources[key] ||= []
      @available_resources[key] << uri
    else
      @available_resources[key] = uri
    end
  end
end
process_resource(resource) click to toggle source
# File lib/opencpu/delayed_calculation.rb, line 55
def process_resource(resource)
  response = self.class.get resource
  if response.ok?
    response.body.strip
  end
end