class Evalso::Request
Public Class Methods
new(hash)
click to toggle source
Usage:
Evalso::Request.new(lang, code, inputFiles: ["filename.txt"])
or
Evalso::Request.new(language: lang, code: code, inputFiles: {"filename.txt" => "file contents"})
Defaults:
Evalso::Request.new(language: nil, code: nil, inputFiles: {}, compilationOnly: false)
If `language` or `code` are not specified, an ArugmentError is raised.
# File lib/evalso.rb, line 46 def initialize(hash) self.class.base_uri Evalso.base_uri hash = { :api_version => Evalso::API_VERSION, :language => nil, :code => nil, :inputFiles => {}, :compilationOnly => false, }.merge(hash) raise ArgumentError, "no language specified." unless hash[:language] raise ArgumentError, "no code specified." unless hash[:code] hash[:inputFiles] = handle_input_files(hash[:inputFiles]) @hash = hash end
Public Instance Methods
handle_input_files(files)
click to toggle source
# File lib/evalso.rb, line 85 def handle_input_files(files) # If files is an array of filenames, # make it a hash of filenames => file content. if files.is_a?(Array) ret = {} files.each do |file| ret[file] = open(file).read end files = ret end files.keys.each do |file| files[file] = Base64.encode64(files[file]) end files end
response()
click to toggle source
# File lib/evalso.rb, line 65 def response opts = { :body => @hash.to_json, :headers => { "Content-Type" => "text/json" } } resp = self.class.post('/evaluate', opts) ret = JSON.parse(resp.body) if !resp.response.is_a?(Net::HTTPSuccess) error = ret['error'] error ||= "#{resp.response.code} #{resp.response.msg.inspect}" raise Evalso::HTTPError, ret['error'] end @response = Response.new(@hash[:code], ret) end